队列的基本操作(c语言版).doc

队列的基本操作(c语言版).doc

ID:48016402

大小:41.50 KB

页数:5页

时间:2020-01-18

队列的基本操作(c语言版).doc_第1页
队列的基本操作(c语言版).doc_第2页
队列的基本操作(c语言版).doc_第3页
队列的基本操作(c语言版).doc_第4页
队列的基本操作(c语言版).doc_第5页
资源描述:

《队列的基本操作(c语言版).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#includetypedefintelemType;structQueuePtr{elemTypedata;structQueuePtr*next;};structLinkQueue{structQueuePtr*front;structQueuePtr*rear;};voidinitQueue(structLinkQueue*Q)/*第一个操作构造一个空队列q*/{Q->front=Q->rear=NULL;/*把队首和队尾指针置空*/return;}voidpush(struc

2、tLinkQueue*Q,elemTypex)/*第二个操作插入元素e为q的新的队尾元素*/{/*得到一个由newP指针所指向的新结点*/structQueuePtr*newP;newP=(structQueuePtr*)malloc(sizeof(structQueuePtr));if(newP==NULL){printf("内存空间分配失败!");exit(1);}/*把x的值赋给新结点的值域,把新结点的指针域置空*/newP->data=x;newP->next=NULL;/*若链队为空,则新结点即是队首结点又是队尾结点*/if(

3、Q->rear==NULL){Q->front=Q->rear=newP;}else{/*若链队非空,则依次修改队尾结点的指针域和队尾指针,使之指向新的队尾结点*/Q->rear=Q->rear->next=newP;/*可以分两句话来写*/}}elemTypepop(structLinkQueue*Q)/*第三个操作队列不为空,则删除q的队头元素,用e返回其值,并返回ok;*/{structQueuePtr*p;elemTypetemp;/*若链队为空则停止运行*/if(Q->front==NULL){printf("队列为空,无法删

4、除!");exit(1);}temp=Q->front->data;/*暂存队尾元素以便返回*/p=Q->front;/*暂存队尾指针以便回收队尾结点*/Q->front=p->next;/*使队首指针指向下一个结点*//*若删除后链队为空,则需同时使队尾指针为空*/if(Q->front==NULL){Q->rear=NULL;}free(p);/*回收原队首结点*/returntemp;/*返回被删除的队首元素值*/}/*第四个操作返回队列头元素*/elemTypegettop(structLinkQueue*Q){/*若链队为空则

5、停止运行*/if(Q->front==NULL){printf("队列为空,无法删除!");exit(1);}returnQ->front->data;/*返回队首元素*/}/*第五个操作判断队列是否为空*/intemptyQueue(structLinkQueue*Q){/*判断队首或队尾任一个指针是否为空即可*/if(Q->front==NULL){printf("asd");return0;}else{printf("dfg");return1;}}/*第六个操作清空队列*/voidclearQueue(structLinkQue

6、ue*Q){structQueuePtr*p=Q->front;/*队首指针赋给p*//*依次删除队列中的每一个结点,最后使队首指针为空*/while(p!=NULL){Q->front=Q->front->next;free(p);p=Q->front;}/*循环结束后队首指针已经为空*/Q->rear=NULL;printf("队列已经清空");return;}intmain(){structLinkQueueQ;inti;inta,b,c,d;a=b=c=d=0;//initQueue(&q);while(1){print

7、f("每种方法都对应一个编号,输入编号进行相应的操作。");printf("1--操作initQueue构造一个队列Q");printf("2--操作gettop返回队列顶元素e");printf("3--操作enQueue插入元素e到队里尾部");printf("4--操作pop删除Q队列的首元素");printf("5--操作clearQueue将Q清为空队列");printf("6--操作emptyQueue判断Q是否为空队列,是返回0,否返回1;");printf("7--退出程序");pri

8、ntf("请选择一个基本操作:");scanf("%d",&a);switch(a){case1:initQueue(&Q);break;case2:c=0;c=gettop(&Q);printf("队

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。