您的位置:首页 > 编程语言 > C语言/C++

c语言用简单数组实现循环队列

2013-08-15 17:15 751 查看
学习数据与结构时在用数组实现循环队列,从书上和网上找了一些例子,但是都打不到理想效果,有用c++的,有用c和结构体的,就是没找到简单用数组实现的完美循环队列,最后经过我反复的思考,整理出了这个例子,当然还是大众的以牺牲一个存储空间来实现的!具体的就不说了,自己理解吧!

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 3

int queue[MaxSize];
int front=0;
int rear=0;

void add_queue(int value)
{
if((rear+1)%MaxSize==front){
printf("The queue is full!\n");
}else{
rear=(rear+1)%MaxSize;
queue[rear]=value;
}
}

int del_queue()
{
int temp;
if(front==rear){
return -1;
}
front=(front+1)%MaxSize;
temp=queue[front];
queue[front]=0;
return temp;

}

void main()
{
int select;
int i,temp;

for(i=0;i<=MaxSize;i++)
queue[i]=0;

printf("(1)Input a data\n");
printf("(2)Output a data\n");
printf("(3)Exit\n");
printf("Please select:");
scanf("%d",&select);
printf("\n");
if(select!=3){
do{
switch(select){
case 1: printf("Please input the input value==>");
scanf("%d",&temp);
add_queue(temp);
printf("The content of queue:\n");
for(i=0;i<=MaxSize;i++){
if(queue[i]!=0)
printf("%d\n",queue[i]);
}break;
case 2: if((temp=del_queue())==-1)
printf("The queue si empty!\n");
else{
printf("The output value is [%d]\n",temp);
printf("The content of queue:\n");
for(i=0;i<=MaxSize;i++){
if(queue[i]!=0)
printf("%d\t",queue[i]);
printf("\n");
}

}break;
}

printf("(1)Input a data\n");
printf("(2)Output a data\n");
printf("(3)Exit\n");
printf("Please select:");
scanf("%d",&select);
printf("\n");
}while(select!=3);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: