《石油大学 队列操作(链队列+顺序队列)》由会员分享,可在线阅读,更多相关《石油大学 队列操作(链队列+顺序队列)(5页珍藏版)》请在金锄头文库上搜索。
1、/进队出队操作时自动判断队空队满 #include#include#define MAXSIZE 1000 typedef struct/顺序队列定义int dataMAXSIZE;/队员的存储空间int front,rear;/队头、队尾指针 SeQueue;SeQueue *sq;int createsq()/顺序队列的建立int n,x,i;sq=(SeQueue*)malloc(sizeof(SeQueue);sq-front=sq-rear=-1;printf(请输入要建立的顺序队列元素个数:);scanf(%d,printf(请输入数据元素:);for(i=0; idatai=x;
2、sq-rear+;return 0;int putsq()/顺序队列的输出int i;printf(顺序队列输出为:);for(i=sq-front+1; irear; i+)printf(%d ,sq-datai);printf(n);return 0;int emptysq()/判断队空(顺序队列)if(sq-front=sq-rear)return 1;elsereturn 0;int fullsq()/判断队满(顺序队列) if(sq-rear+1=MAXSIZE)return 1;elsereturn 0;int insq()/入队(顺序队列)int x;if(fullsq()pri
3、ntf(队满!n);elseprintf(请输入入队元素:);scanf(%d,sq-data+sq-rear=x;return 0;int outsq()/出队(顺序队列)int x;if(emptysq()printf(队空!n);elsex=sq-data+sq-front;printf(队头元素%d 已出队n,x);return 0;typedef struct node/链队列结点定义int data;struct node *next; QNode;typedef struct/将链队列头尾指针封装在一起QNode *front;QNode *rear; LQueue;LQueue
4、 *q;int createlq()/创建带头节点的链队列int i,n; QNode *p;q=(LQueue*)malloc(sizeof(LQueue);p=(QNode*)malloc(sizeof(QNode);q-front=q-rear=p;printf(请输入要建立的链栈元素个数:);scanf(%d,printf(请输入数据:);for(i=0; idata);q-rear-next=p;q-rear=p;q-rear-next=NULL;return 0;int putlq()/链队列的输出QNode *p;p=q-front-next;printf(顺序队列输出为:);w
5、hile(p!=NULL)printf(%d ,p-data);p=p-next;printf(n);return 0;int emptylq()/判断队空(链队列)if(q-front=q-rear)return 1;elsereturn 0;int inlq()/入队(链队列)int x;QNode *p;p=(QNode*)malloc(sizeof(QNode);printf(请输入入队元素:);scanf(%d,p-next=NULL;q-rear-next=p;q-rear=p;return 0;int outlq()/出队(链队列)QNode *p;if(emptylq()pri
6、ntf(队空!n);else if(q-front-next=NULL)printf(队空!n);q-rear=q-front;elsep=q-front-next;q-front-next=p-next;printf(队头元素%d 已出队n,p-data);free(p);return 0;int main()int n;createsq();putsq();printf(*顺序队列操作*n0.退出 1.进队 2.出队n*n);printf(请输入要执行的操作序号:);scanf(%d,while(n!=0)if(n=1)insq();putsq();if(n=2)outsq(); putsq();printf(请输入要执行的操作序号:);scanf(%d,createlq();putlq();printf(*链队列操作*n0.退出 1.进队 2.出队n*n);printf(请输入要执行的操作序号:);scanf(%d,while(n!=0)if(n=1)inlq();putlq();if(n=2)outlq();putlq();printf(请输入要执行的操作序号:);scanf(%d,