循环队列


 1 #include "stdio.h"
 2 #include "string.h"
 3 int que[100];//定义队列
 4 char Ask[100];//定义询问串
 5 void pop(int *front,int *top)
 6 {
 7     if(*front == *top){
 8         printf("Empty que!\n");
 9         return;
10     }
11     *front = (*front + 1) % 5;
12 }
13 void push(int *front,int *top,int val)
14 {
15     if((*top + 1) % 5 == *front){//判断队列是否满了
16         printf("Que is full!\n");
17         return;
18     }
19     *top = (*top + 1) % 5;//当top为最后一个位置时回到0位置
20     que[*top] = val;//入队
21 }
22 int main()
23 {
24     int k;
25     int front = 0;//队首
26     int top = 0;//quit()退出询问,pop()出队,push()入队
27     while(1){
28         printf("Ask:");
29         scanf("%s",Ask);//输入询问串
30         getchar();//接收不必要的换行
31         if(strcmp("quit()",Ask) == 0)
32             break;
33         else if(strcmp("pop()",Ask) == 0)
34             pop(&front,&top);
35         else{
36             scanf("%d",&k);
37             push(&front,&top,k);
38         }
39     }
40     while(front != top){//输出队列
41         front = (front + 1) % 5;
42         printf("%d\n",que[front]);
43     }
44     return 0;
45 }

相关