- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件技术基础精要.ppt
入队示意图 3. 循环队列入队操作 要求:在容量为m的循环队列Q中插入一个元素x 算法操作步骤: step1 判别队列是否已满; step2 队尾指针后移一个位置,将新结点元素值存入当前结点单元。 循环队列入队算法(算法描述语言) PROCEDURE ADDCQ(Q,m,rear,front,s,x) IF(s=1)and(rear=front)THEN{Queue-OVERFLOW;RETURN} rear=rear+1 if(rear=m+1)THEN rear=1 Q(rear)=x s=1 RETURN 循环队列入队算法(c语言) #include“stdlib.h” void ini_queue(q,m,front,rear,s) ET *q;int m,*front,*rear,*s; {q=malloc(m*sizeof(ET); *front=m;*rear=m;*s=0; return; } void addcq(q,m,rear,front,s,x) ET q[],x;int m,*rear,*front,*s; {if((*s==1)&&(*rear==*front)) {printf(“Queue VERFLOW\n”); return;} *rear=*rear+1; if(*rear==m)*rear=0; q[*rear]=x;*s=1;return; } 4. 循环队列出队操作 要求:在容量为m的循环队列中删除一个元素(退队运算)。 算法操作步骤: Step1:判别队列是否为空;若空, 则显示队列 ‘下溢’;否则转Step2; Step2:队头指针后移一个位置; Step3:返回该位置上的元素。 void delcq(q,m,rear,front,s,y) ET q[],*y;int m,*rear,*front,*s; { if(*s==0){printf(“Queue-UNDERFLOW\n”);return;} *front=*front+1; if(*front=m+1) *front=1; *y=q[*front-1]; if(*front==*rear) *s=0; return; } 五、队列的链式存储结构 1. 概念: 用带头结点的单链表作为队列的存储结构,称为队列的链式存储结构。 data next 数据域 指针域 2. 存储结构的C语言描述, struct qnode { int data ; struct qnode * next; } ; typedef struct qnode QNODE ; QNODE *front, *rear;/*队头队尾*/ 3.链队列为空的表示 链队列为空, Queue.front = Queue.rear 表示形式: front rear ^ front rear ^ ... an a2 a1 链队满的条件为:T = NULL。T 为新创建的结点, 非空队列: 4. 链队列的入队操作 算法1-14描述: Step1:申请建立一个新结点T; Step2:判别T是否为空;若空,表示 队列已满; Step3:非空,将T插入链中,修改rear指针。 addqueue(int x) { QNODE *t; t = (QNODE*)malloc(sizeof(QNODE)); if ( t = = NULL) { printf(“ 内存无可用空间\n”); exit(1); } else { rear - next = t; rear = t; t -data = x; t -next = NULL ; } } 5. 链队列的出队操作 出队操作要考虑两种情况: 当队列长度为1时,除了修改队头指针外,还要修改队尾指针。 Queue Queue front rear rear front a1 an ^ a1 a2 ... a2 ^ ... an ^ 当队列长度大于1时,只修改队头指针即可 Queue an ^ rear Queue front rear ^ an ^ T front 链队列的出队操作 算法1-15描述: Step1:判别队列是否为空;若空,则显示队列‘下溢’; Step2 :非空,则判别队列长度是否为1; Step2.1:不为1,修改头指针; Step2.2:为1,则修改头、尾指针; Step3:释放T。 delque
您可能关注的文档
最近下载
- 1桌签格式.doc VIP
- 丰富多彩的中华传统体育+课件 2025-2026学年人教版(2024)初中体育与健康八年级全一册.pptx VIP
- XX能源公司XX风电场×MW工程建设管理制度汇编(总承包项目部)完整版.doc
- 2020抽水蓄能电站施工设计方案.pdf VIP
- 儿童糖尿病酮症酸中毒诊疗指南(2024).pptx VIP
- 虚拟电厂管理平台需求及设计-方案合集.docx VIP
- 茶饮料灭菌技术概述.pdf VIP
- 2025新高考高一函数定义域值域解析式易错培优竞赛试题(解析板).docx
- 常用NTC47KΩ阻值B=3950阻温R-T对照表.pdf VIP
- 歌曲《我和我的祖国》课件.pptx
文档评论(0)