数据结构实验二队列的顺序存储结构(循环队列)和操作实现。
方法/步骤
1、要求队列的顺序存储结构(循环队列)和操作实现。
2、代码#include#include#defineOVERFLOW-2#defin娣定撰钠eMAXQSIZ呶蓟鹭毵E100/*队列的最大长度*/typedefstruct{int*base;//队列的元素空间头指针指示器intfront;intrear;/*尾指针指示器*/}SqQueue;intInitQueue(SqQueue&Q){//初始化操作Q.base=(int*)malloc(MAXQSIZE*sizeof(int));if(!Q.base)exit(OVERFLOW);Q.front=Q.rear=0;return1;}intEnQueue(SqQueue&Q){//入队操作inte;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;//队尾指针后移return1;}intDeQueue(SqQueue&Q){//出队操作inte;if(Q.front==Q.rear){printf("队列已经为空\n");return-1;}e=Q.base[Q.front];//队头出队printf("%d出队\n",e);Q.front=(Q.front+1)%MAXQSIZE;//队头下标后移return1;}voidtip(){printf("*************\n");printf("*输入1进队*\n");printf("*输入2出队*\n");printf("*输入0退出*\n");printf("*请选择:*\n");printf("*************\n");}intmain(){intk;SqQueueQ;InitQueue(Q);//初始化tip();while(scanf("%d",&k),k){switch(k){case1:EnQueue(Q);tip();printf("操作完毕\n");break;case2:DeQueue(Q);tip();printf("操作完毕\n");break;}}return0;}
3、运行结果