一、要求队列的顺序存储结构(循环队列)和操作实现。
二、代码#include#include#define OVERFLOW -2#define MAXQSIZE 100 /*队列的最大长度*/typedef struct { int *base; // 队列的元素空间头指针指示器 int front; int rear; /*尾指针指示器*/}SqQueue; int InitQueue(SqQueue &Q) {//初始化操作 Q.base = (int * )malloc(MAXQSIZE*sizeof(int)); if (!Q. base) exit (OVERFLOW); Q.front=Q.rear =0; return 1;}int EnQueue(SqQueue &Q) {//入队操作 int e; if ((Q. rear+ 1) % MAXQSIZE == Q. front) { printf("队列已满,不能进队\n"); return -1;//满标志 } printf("请输入进队元素:"); scanf("%d",&e); Q.base[Q.rear] = e;//进队 Q.rear = (Q. rear + 1) % MAXQSIZE;//队尾指针后移 return 1;}int DeQueue (SqQueue &Q) {//出队操作 int e; if (Q. front == Q. rear) { printf("队列已经为空\n"); return -1; } e = Q. base[Q. front];//队头出队 printf("%d 出队\n",e); Q.front = (Q.front + 1) % MAXQSIZE;//队头下标后移 return 1;} void tip(){ printf("*************\n"); printf("*输入1 进队 *\n"); printf("*输入2 出队 *\n"); printf("*输入0 退出 *\n"); printf("*请选择: *\n"); printf("*************\n");}int main(){ int k; SqQueue Q; InitQueue(Q);//初始化 tip(); while(scanf("%d",&k),k) { switch(k) { case 1: EnQueue(Q); tip(); printf("操作完毕\n"); break; case 2: DeQueue(Q); tip(); printf("操作完毕\n"); break; } } return 0;}
三、运行结果