3.算法填空题 数组q[MAX]存储一个循环队,尾指针last用来指向当前队列中的尾元素,count用来记录队列中当前元素个数。 下面的程序用于模拟队操作全过程。 提示:当count=0时,表示队空;当count=MAX时,表示队满。 当队不空时,(last-count+1+MAX)%MAX即是队头位置。 #include <stdio.h> #define MAX 400 //x 进队函数 int addq(int q[], int &last, int &count, int x) { if (count == MAX) (1) ; last = (last + 1) % MAX; (2) ; (3) ; return 1; } //x 出队函数 int delq(int q[], int last, int &count, int &x) { int f; if (count == 0) return 0; f = (4) ; x = q[f]; count--; return 1; } //输出队列中所有元素的函数 void print(int q[], int last, int count) { int i, j; if ( (5) ) { printf(" 当前队中没有元素! \n"); return; } printf(" 当前队中的元素为:\n"); i = (6) ; for (j = 1; (7) ; j++) { printf("%4d", q[i]); i = (i + 1) % MAX; } printf(" \n"); } //主函数 int main() { int q[MAX], (8) , count = 0, c, k, x; while (1) { printf(" 请输入操作码,1:进队;2.出队;3.显示队内容;0:结束 c= "); scanf(" %d", &c); if (c == 0) break; if (c == 1) { printf(" 请输人进队元素x:"); scanf("%d",&x); k = (9) ; if (k==0)printf("队已满,进队失败! \n" ); else printf("%d 已进队!\n" ,x); } else if(c == 2) { k = (10) ; if(k == 0)printf( "队空,无元素出队! \n"); else printf("元素%d已从队中退出! \n" ,x); } else if(c == 3) print(q, last, count); else continue; } printf("程序结束\n" ); }