使用数组模拟队列:
/*==========用数组模拟队列===============*/
/*起初数组元素全部为0 我们给它入队但数据都为非 0 出队元素确定后 该出队元素设置为 0*/
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define maxsize 10
int queue[maxsize];
int front = -1;
int rear = -1;
void addqueue(int value)
{
if(rear==maxsize-1)
{
printf("queue is full\n");
exit (0);
}
else
{
rear++;
queue[rear]=value;
}
}
int delqueue()
{
int temp;
if(front==rear)
{
printf("queue is empty!\n");
exit (0);//程序退出,运行窗口消失
}
else
{
front++;
temp=queue[front];//the element of delqueue
queue[front]=0;//该元素既然出队了,把它赋值0
return temp;
}
}
int main(){
int i,j,temp;
char choose;
//先给数组初始化,后面不是队列中的元素则数值全部为 0
for(i=0;i<maxsize;i++)
queue[i]=0;
printf("please input some datas to queue:\n");
//比较好的方式,要多用
scanf("%d",&temp);
while(temp!=0)
{
addqueue(temp);
scanf("%d",&temp);
}
//上面用了scanf,下面 用了scanf 结果不大对。选择用getch() 可行,getchar()不行
printf("do you want to delque?\n");
choose=getch();
while( choose!='n')
{
printf("出队的元素为 %d\n",delqueue() );
printf("do you want to delque?\n");
choose=getch();
}
for(i=0;i<maxsize;i++)
printf("queue[%d]=%d\n",i,queue[i]);
system("pause");
return 0;
}