#include<stdio.h>#include<stdlib.h>#define queuesize 10 //顺序栈分配储存空间#define null 0#define ok 1#define overflow -2typedefint elemtype;typedefint status;typedefstruct{
elemtype * data;int front;int rear;//队头指针,队尾指针;}sqqueue;
status initsqqueue( sqqueue &q){
q.data=new elemtype[queuesize];if(!q.data)exit(overflow);else{
q.front=q.rear=0;//初始化}return ok;}intqueuelength(sqqueue q)//求循环队列长度{return(q.rear-q.front+queuesize)%queuesize;}
status createquque(sqqueue &q,int a[],int n)//创建队列赋值为空;{int i;
q.data=new elemtype[queuesize];
q.front=0;
q.rear=0;for(i=0;i<n;i++){
q.data[q.rear]=a[i-1];
q.rear=(q.rear+1)%queuesize;//队尾指针始终指向下一个元素的空间;}return ok;}intenqueue(sqqueue &q,elemtype x)//入队操作{if((q.rear+1)%queuesize==q.front)//判队满{printf("队满,无法入队\n");return null;}else{
q.data[q.rear]=x;
q.rear=(q.rear+1)%queuesize;printf("入队成功\n");return ok;}}intdequeue(sqqueue &q,elemtype &x)//出队运算{if(q.rear==q.front){printf("队为空,无法出队:\n");return null;}else{
x=q.data[q.front];
q.front=(q.front+1)%queuesize;printf("出队成功,出队元素是%d\n",x);return ok;}}intgethead(sqqueue q)// 取队头元素{if(q.front!=q.rear)return q.data[q.front];}intqueuefull( sqqueue q){if(q.front=q.rear)return ok;elsereturn null;}voiddisplay(sqqueue q)//便利{
sqqueue r;
r.front=q.front;if(q.front==q.rear){printf("SqQueue empty!\n");return;}else{printf("in order SqQueue:");while(q.rear!=r.front){printf("%d<-",q.data[r.front]);
r.rear=r.front;
r.front=(r.front+1)%queuesize;}printf("\n");printf("the position of tail :rear=%d\n",q.data[r.rear]);printf("the position of head :front=%d\n",q.data[q.front]);}}intmain(){int select;
sqqueue head;do{printf("\n frist be use must be initiated !\n");printf("please choose (0--7):\n");printf("====================menu==========\n");printf(" 1 initate SqQueue \n");printf(" 2 create SqQueue queue is null \n");printf(" 3 qppend SqQueue element\n");printf(" 4 delete SQueue element \n");printf(" 5 is empty SqQueue ! \n");printf(" 6 gethead element \n");printf(" 7 display SqQueue \n");printf(" 8 is full SqQueue \n");printf(" 0 exit \n");printf("\n======================================\n");scanf("%d",&select);switch(select){case1:{system("cls");initsqqueue(head);printf("Sqqueue have been initiated!\n");display(head);break;}case2:{system("cls");int n=10,a[10];// printf(" please input n ,this is length:\n");//scanf("%d",&n);for(int i=1;i<=n;i++)
a[i-1]=i;createquque(head,a,n);printf("sqqueue have been created!\n");display(head);break;}case3:{system("cls");int x;printf("input sqqueue value:\n");scanf("%d",&x);enqueue(head,x);display(head);break;}case4:{system("cls");int e,z;
z=dequeue(head,e);printf("sqqueue head element %d be deleted!\n",z);display(head);break;}case5:{system("cls");//if(ququeempty(head)) printf("sqqueue is empty\n");printf("sququeu is not empty\n");display(head);break;}case6:{system("cls");int y;
y=gethead(head);printf(" sqqueue head element :%d\n",y);display(head);break;}case7:{system("cls");display(head);break;}case8:{system("cls");if(queuefull(head)){printf("sqqueue is full\n");}elseprintf(" sqqueue is not full\n");display(head);break;}case0:exit(0);}}while(select<=8);}