求纠错!书上的例子,运行不出想要的结果
程序代码:
#include<stdio.h> #define Max 100 void SetNull(int* front,int* rear) { *front=0; *rear=0; } int Empty(int* front,int* rear) { if(*front==*rear) return(1); else return(0); } int EnQueue(int q[],int x,int* front,int* rear) { *rear=(*rear+1)%Max; if(*front==*rear) { printf("队列发生上溢\n"); return(-1); } else { q[*rear]=x; return(0); } } int DelQueue(int q[],int* y,int* front,int* rear) { *front=(*front+1)%Max; if(*front==*rear) { printf("队列发生下溢\n"); return(-1); } else { *y=q[*rear]; return(0); } } void main() { int q[Max]; int f=0,r=0; int i,x,m,n; int a; SetNull(&f,&r); printf("要输入队列的字符个数:\n"); scanf("%d",&m); printf("输入队列的整型数据:\n"); for(i=0;i<m;i++) { i=i; scanf("%d",&x); a=EnQueue(q,x,&f,&r); if(a==-1) break; } printf("要提出队列的字符个数:\n"); scanf("%d",&n); printf("输出从队列中提取的数据:\n"); for(i=0;i<n;i++) { printf("%d\n",x); if(DelQueue(q,&x,&f,&r)==-1) break; } if(Empty(&f,&r)==1) printf("队列为空"); else printf("队列中还有%d个数据",(m-n)); } /* 要输入队列的字符个数: 3 输入队列的整型数据: 5 8 4 要提出队列的字符个数: 2 输出从队列中提取的数据: 4 4 */