欢迎来到天天文库
浏览记录
ID:46615099
大小:21.00 KB
页数:3页
时间:2019-11-26
《队列的初始化、插入和删除操作(C语言版)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、队列设计与算法实现1.实验目的本实验将通过实验实例和程序设计练习,达到如下目的:(1)掌握队列的链式表示和实现2.实验内容及要求本实验的内容包括(1)编写一个程序实现链队列的初始化、插入和删除基本操作。3.实验要求3.1实验一:实验要求:编写一个程序实现链队列的以下操作,并在此基础上设计一个主程序,完成如下功能:(1)初始化链队列;(2)建立一个链队列(3)入队;(4)出队。需要注意:(1)与链栈类似,无需考虑队满或上溢;(2)在出队算法中,一般只需要修改对头指针,但当原队列中只剩一个结点是,该结点既是队头又是队尾,故删去此结点时需要修改队尾指针,且删除此
2、结点后队列为空;(3)为了简化边界条件的处理,在队头结点前可附加一个头结点。以下是我自己根据严蔚敏数据结构教材自己编写的教材:#include#defineOK1#defineERROR0#defineOVERFLOW-1typedefstructQNode{chardata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;LinkQueueQ;intmain(){intInitQueue(LinkQueue*Q);
3、intEnQueue(LinkQueue*Q,chare);intDeQueue(LinkQueue*Q,char*e);intQueueTraverse(LinkQueueQ);inti;charc,d,e,f;chara[]="Iamhappy";clrscr();InitQueue(&Q);for(i=0;a[i]!=' ';i++)EnQueue(&Q,a[i]);printf("TheQueueis:");QueueTraverse(Q);do{printf("Ifyouwanttoinsert,pleasepress"P"delete
4、press"d"elsepressanyotherkeytoexit");scanf("%c",&c);switch(c){case'p':{printf("Pleaseinputtheelemyouwanttoinset:");scanf("%c",&d);EnQueue(&Q,d);printf("TheQueueinsertedis:");QueueTraverse(Q);break;}case'd':{DeQueue(&Q,&e);printf("Theelemwhichisdeletedis:%c",e);break;}d
5、efault:exit(1);}printf("Doyouwanttocontune?(Y/N)");scanf("%c",&f);}while(f=='y');}InitQueue(LinkQueue*Q){(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode));if(!(*Q).front)exit(OVERFLOW);(*Q).front->next=NULL;returnOK;}EnQueue(LinkQueue*Q,chare){QueuePtrp=(QueuePtr)malloc(sizeo
6、f(QNode));if(!p)exit(OVERFLOW);p->data=e;p->next=NULL;(*Q).rear->next=p;(*Q).rear=p;returnOK;}DeQueue(LinkQueue*Q,char*e){QueuePtrp;if((*Q).front==(*Q).rear)returnERROR;p=(*Q).front->next;*e=p->data;(*Q).front->next=p->next;if((*Q).rear==p)(*Q).rear=(*Q).front;free(p);returnOK;}in
7、tQueueTraverse(LinkQueueQ){while(Q.front!=Q.rear){printf("%c",Q.front->next->data);Q.front=Q.front->next;}printf("");returnOK;}
此文档下载收益归作者所有