队列的建立与基本操作算法(C语言实现).doc

队列的建立与基本操作算法(C语言实现).doc

ID:50849057

大小:36.50 KB

页数:9页

时间:2020-03-15

队列的建立与基本操作算法(C语言实现).doc_第1页
队列的建立与基本操作算法(C语言实现).doc_第2页
队列的建立与基本操作算法(C语言实现).doc_第3页
队列的建立与基本操作算法(C语言实现).doc_第4页
队列的建立与基本操作算法(C语言实现).doc_第5页
资源描述:

《队列的建立与基本操作算法(C语言实现).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、队列的建立与基本操作算法(C语言实现)/*c3-2.h单链队列--队列的链式存储结构*//*c3-3.h队列的顺序存储结构(可用于循环队列和非循环队列)*/typedefstructQNode{QElemTypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront,rear;/*队头、队尾指针*/}LinkQueue;#defineMAXQSIZE5/*最大队列长度(对于循环队列,最大队列长度要减1)*/typedefstruct{QElemType*base;/*初始化的动态分配存储空间*/intfront;/

2、*头指针,若队列不空,指向队列头元素*/intrear;/*尾指针,若队列不空,指向队列尾元素的下一个位置*/}SqQueue;/*bo3-2.c链队列(存储结构由c3-2.h定义)的基本操作(9个)*//*bo3-3.c循环队列(存储结构由c3-3.h定义)的基本操作(9个)*/StatusInitQueue(LinkQueue*Q){/*构造一个空队列Q*/(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode));if(!(*Q).front)exit(OVERFLOW);(*Q).front->next=NULL;returnOK;}St

3、atusDestroyQueue(LinkQueue*Q){/*销毁队列Q(无论空否均可)*/while((*Q).front){(*Q).rear=(*Q).front->next;free((*Q).front);(*Q).front=(*Q).rear;}returnOK;}StatusInitQueue(SqQueue*Q){/*构造一个空队列Q*/(*Q).base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));if(!(*Q).base)/*存储分配失败*/exit(OVERFLOW);(*Q).front=(*Q).rear=0;

4、returnOK;}StatusDestroyQueue(SqQueue*Q){/*销毁队列Q,Q不再存在*/if((*Q).base)free((*Q).base);(*Q).base=NULL;(*Q).front=(*Q).rear=0;returnOK;}StatusClearQueue(LinkQueue*Q){/*将Q清为空队列*/QueuePtrp,q;(*Q).rear=(*Q).front;p=(*Q).front->next;(*Q).front->next=NULL;while(p){q=p;p=p->next;free(q);}returnOK;}StatusQueu

5、eEmpty(LinkQueueQ){/*若Q为空队列,则返回TRUE,否则返回FALSE*/if(Q.front==Q.rear)returnTRUE;elsereturnFALSE;}intQueueLength(LinkQueueQ){/*求队列的长度*/inti=0;QueuePtrp;p=Q.front;while(Q.rear!=p){i++;p=p->next;}returni;}StatusGetHead_Q(LinkQueueQ,QElemType*e)/*StatusClearQueue(SqQueue*Q){/*将Q清为空队列*/(*Q).front=(*Q).rear

6、=0;returnOK;}StatusQueueEmpty(SqQueueQ){/*若队列Q为空队列,则返回TRUE,否则返回FALSE*/if(Q.front==Q.rear)/*队列空的标志*/returnTRUE;elsereturnFALSE;}intQueueLength(SqQueueQ){/*返回Q的元素个数,即队列的长度*/return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}StatusGetHead(SqQueueQ,QElemType*e)避免与bo2-6.c重名*/{/*若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR*

7、/QueuePtrp;if(Q.front==Q.rear)returnERROR;p=Q.front->next;*e=p->data;returnOK;}StatusEnQueue(LinkQueue*Q,QElemTypee){/*插入元素e为Q的新的队尾元素*/QueuePtrp=(QueuePtr)malloc(sizeof(QNode));if(!p)/*存储分配失败*/exit(OVERFLOW

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

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

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