数据结构C语言版循环队列.doc

数据结构C语言版循环队列.doc

ID:50840625

大小:42.45 KB

页数:5页

时间:2020-03-15

数据结构C语言版循环队列.doc_第1页
数据结构C语言版循环队列.doc_第2页
数据结构C语言版循环队列.doc_第3页
数据结构C语言版循环队列.doc_第4页
数据结构C语言版循环队列.doc_第5页
资源描述:

《数据结构C语言版循环队列.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/*数据结构C语言版循环队列P64编译环境:Dev-C++4.9.9.2*/#include#includetypedefintQElemType;//队列的顺序存储结构(可用于循环队列和非循环队列)#defineMAXQSIZE5//最大队列长度(对于循环队列,最大队列长度要减1)typedefstruct{QElemType*base;//初始化的动态分配存储空间,相当于一个数组头//头指针,若队列不空,指向队列头元素,相当于一个下标intfront;//尾指针,若队列不空,指向队列尾元素的下一个位置,

2、相当于一个下标intrear;}SqQueue;//空队列的标志是队头队尾指针都相同//构造一个空队列QintInitQueue(SqQueue*Q){//给队头队尾指针分配空间,并置空(*Q).base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));//这里的Q.base相当于一个数组头if(!(*Q).base)//存储分配失败exit(0);(*Q).front=(*Q).rear=0;//下标初始化为0return1;}//销毁队列Q,Q不再存在intDestroyQueue(SqQueu

3、e*Q){if((*Q).base)free((*Q).base);(*Q).base=NULL;(*Q).front=(*Q).rear=0;//空队列的标志是队头队尾指针都相同,且为0return1;}//将Q清为空队列intClearQueue(SqQueue*Q){(*Q).front=(*Q).rear=0;//空队列的标志是队头队尾指针都相同,且为0return1;}//若队列Q为空队列,则返回1,否则返回0intQueueEmpty(SqQueueQ){if(Q.front==Q.rear)//队列空的标志return1;else

4、return0;}//返回Q的元素个数,即队列的长度intQueueLength(SqQueueQ){return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}//若队列不空,则用e返回Q的队头元素,并返回1,否则返回0intGetHead(SqQueueQ,QElemType*e){if(Q.front==Q.rear)//队列空return0;//*(Q.base+Q.front)相当于Q.base[Q.front],即Q.base是数//组头,表示第Q.front个元素*e=*(Q.base+Q.front);r

5、eturn1;}//插入元素e为Q的新的队尾元素intEnQueue(SqQueue*Q,QElemTypee){if(((*Q).rear+1)%MAXQSIZE==(*Q).front)//队列满return0;(*Q).base[(*Q).rear]=e;(*Q).rear=((*Q).rear+1)%MAXQSIZE;return1;}//若队列不空,则删除Q的队头元素,用e返回其值,并返回1;否则返回0intDeQueue(SqQueue*Q,QElemType*e){if((*Q).front==(*Q).rear)//队列空ret

6、urn0;*e=(*Q).base[(*Q).front];(*Q).front=((*Q).front+1)%MAXQSIZE;return1;}//从队头到队尾依次对队列Q中每个元素调用函数vi()intQueueTraverse(SqQueueQ,void(*vi)(QElemType)){inti;i=Q.front;while(i!=Q.rear){vi(*(Q.base+i));i=(i+1)%MAXQSIZE;}printf("");return1;}voidvisit(QElemTypei){printf("%d",i);}

7、intmain(){intj;inti=0,l;QElemTyped;SqQueueQ;InitQueue(&Q);printf("初始化队列后,队列空否?%u(1:空0:否)",QueueEmpty(Q));printf("请输入整型队列元素(不超过%d个),-1为提前结束符:",MAXQSIZE-1);do{scanf("%d",&d);if(d==-1)break;i++;EnQueue(&Q,d);}while(i

8、列空否?%u(1:空0:否)",QueueEmpty(Q));printf("连续%d次由队头删除元素,队尾插入元素:",MAXQSIZE);

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

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

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