#include#include #define MAXSIZE 5 #define ERROR 0; #define OK 1; typedef struct { int* base; int front; int rear; }Queue; int Cs_Queue(Queue &Q) { Q.base = (int*)malloc(MAXSIZE*sizeof(int)); if (!Q.base) { printf("分配失败!n"); return ERROR; } Q.front = Q.rear = 0; printf("分配成功!n"); return OK; } void length(Queue Q) { int L; L = (Q.rear - Q.front + MAXSIZE) % MAXSIZE; printf("队列长度:%dn",L); } int Cr_Queue(Queue& Q) { if ((Q.rear + 1) % MAXSIZE == Q.front) { printf("队列已满!n"); return ERROR; } int e; printf("插入数据:"); scanf("%d",&e); Q.base[Q.rear] = e; Q.rear = (Q.rear + 1) % MAXSIZE; printf("已插入!n"); return OK; } int De_Queue(Queue& Q) { if (Q.front == Q.rear) { printf("队空!n"); return ERROR; } int e; e = Q.base[Q.front]; Q.front = (Q.front + 1) % MAXSIZE; printf("删除成功!n"); return OK; } int Qz_Queue(Queue &Q) { if (Q.front != Q.rear) { printf("取值:%dn",Q.base[Q.front]); return OK; }printf("队空!n"); return ERROR; } int main() { Queue Q; int choose; printf("1.初始化n"); printf("2.插入n"); printf("3.删除n"); printf("4.取栈n"); printf("5.长度n"); printf("6.退出n"); while (1) { printf("选择操作:"); scanf("%d", &choose); printf("n"); switch (choose) { case 1:Cs_Queue(Q); break; case 2:Cr_Queue(Q); break; case 3:De_Queue(Q); break; case 4:Qz_Queue(Q); break; case 5:length(Q); break; case 6:system("pause"); return 0; } } }
运行结果:



