#include #include #define MAXSIZE 10 typedef struct Queue { int *data; // 存储空间的基地址 int front, rear; // 头指针、尾指针 int count; // 新增一个 count变量,用于记录队中元素个数 } Queue; // 初始化队列 void Init(Queue &Q) { Q.data = new int[MAXSIZE]; // todo list 处理front, rear指针,以及count变量 Q.front = 0; Q.rear = 0; Q.count = 0; } // 入队 void EnQueue(Queue &Q, int e) { if (Q.count >= MAXSIZE) // todo list //利用count判断队是否满 printf("队满\n"); // 【有坑,思考】 else { // todo list //入队元素,尾指针+1 Q.data[Q.rear] = e; Q.rear++; // todo list //更新count值 Q.count++; } } // 出队 void DelQueue(Queue &Q, int &e) { if (Q.count == 0) // todo list //利用count判断队是否空 printf("队空\n"); else { // todo list //出队元素,头指针+1 e = Q.data[Q.front]; Q.front++; // todo list //更新count值 Q.count--; printf("出队元素为:%d\n", e); } } // 判断队空 void IsNull(Queue Q) { if (Q.count == 0) // todo list //利用count判断队是否空 printf("队空\n"); else printf("队不空\n"); } // 显示整个队列 void Display(Queue Q) { while (Q.count > 0) { printf("%3d,", Q.data[Q.front]); // todo list //头指针依次往后移动 Q.front++; // todo list //更新count值 Q.count--; } printf("\n"); } int main() { Queue Q; printf("------------------------------------\n"); printf("1.初始化队列\n"); printf("2.判断队列是否为空\n"); printf("3.入队\n"); printf("4.出队\n"); printf("5.显示整个队列\n"); printf("6.退出\n"); printf("------------------------------------\n"); int sel; while (1) { printf("请输入选项:"); scanf("%d", &sel); // getchar(); switch (sel) { case 1: Init(Q); printf("链表已经初始化。\n"); break; case 2: IsNull(Q); break; case 3: { int n, e; printf("请输入入队元素个数:"); scanf("%d", &n); printf("请输入需要入队的%d个元素:", n); for (int i = 0; i < n; i++) { scanf("%d", &e); EnQueue(Q, e); } } break; case 4: { int e; DelQueue(Q, e); } break; case 5: printf("队列为:"); Display(Q); break; case 6: exit(0); } } }