- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 栈3.2 栈的应用举例3.3 队列3.4 队列应用举例.ppt
第3章 栈和队列 datatype top(int i) { datatype x; if (i==0) if(ta0) { x=v[ta-1]; return x; } else return NULL; if(i==1) if (tbm-1) { x=v[tb+1]; return x; } else return NULL; return NULL;} 3.4* 队列的应用举例 3.3.2 顺序队列 队列的顺序存储结构称为顺序队列。顺序队列用一个向量空间来存放当前队列中的元素。 由于队列的队头和队尾的位置均是变化的,因而要设置两个指针,分别指示当前队头元素和队尾元素在向量空间中的位置。 typedef char datatype; #define maxsize 4 typedef struct {datatype data[maxize]; int front,rear; }sequeue; sequeue *sq; 空队列时,队列的头、尾指针都指向向量空间的前一位置,在此可设为-1。 sq-front=-1; sq-rear=-1; A 0 B 1 C 2 3 sq→front -1 sq→rear 规定:队头指针front总是指向当前队头元素的前一位置;尾指针rear总是指向当前队尾元素的位置。 0 1 2 3 sq→front sq→rear -1 队尾 sq→rear -1 0 1 2 3 A B 队头 sq→front C D 顺序队列满判断条件: sq→rear=M-1 顺序队列从队尾入队,为 : sq→rear++; sq→data[sq→rear]=x; 队列满,不能再入队了,再入队就出现“上溢”现象!!! 队尾 sq→rear 队尾 sq→rear M=4 顺序队列 顺序队列入队操作 队尾 sq→rear -1 0 1 2 3 A B 队头 sq→front 因为 sq→rear = M-1 故不能再做入队操作。但当前队列并不满,我们把这种现象称为“假上溢”现象。 顺序队列从队头出队,为: sq→front++; return(sq→data[sq→font]); 队头 sq→front 队头 sq→front 顺序队列空判断条件: sq→rear==sq→front 队列满,不能再入队了! 队列空,不能再出队了,再出队就出现“下溢”现象了! M=4 顺序队列 顺序队列出队操作 克服“假上溢”现象,通常采用的方法是:设想向量是一个首尾相接的圆环,即下标为0的向量接在下标为maxsize-1的向量之后,我们将这种意义下的向量称为循环向量,并将循环向量中的队列称为循环队列。 队头 sq→front 队尾 sq→rear 0 1 2 3 C D (顺序队列) front 0 1 2 3 rear C D (循环队列) 循环队列入队运算: if (sq→rear+1)=M) sq→rear=0; else sq→rear++; sq→data[sq→rear]=x; 上述运算可等价于: sq→rear=(sq→rear+1)%M; sq→data[sq→rear]=x; front 0 1 2 3 rear C D (循环队列) rear front 0 1 2 3 rear C (循环队列) A B 循环队列出队运算: sq→front=(sq→front+1)%M; return(sq→data[sq→front]); front front 0 1 2 3 rear A B front 0 1 2 3 rear A B rear C rear D (C、D入队) (某时刻队列状态) (C、D入队后队列满) front 0 1 2 3 rear A B (A、B出队) front front 问题: sq→rear= =sq→front无法区分队列是空还是满? (A、B出队后队列空) 解决办法之一: ①空队列时,令队列的头指针和尾指针都等于M-1,因此 sq→rear= =sq→front 为判断队列空的条件。 front 0 1 2 3 rear 队列空状态 front 0 1 2 3 rear 队列满状态 C B A ③浪费了一个向量空间用于区别队列的首尾。 ②入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为是队满,则判断队满条件是: (sq→rear+1)%M==sq→front front 0 1 2
您可能关注的文档
- 【考纲点击】了解金属铝及其重要化合物的主要性质及应用..ppt
- 人都是逼出来的.ppt
- §10.2 像片控制点的布设.ppt
- ----OSI基本命令.ppt
- 1. Quartus II 使用介绍-EDA 技术实用教程.ppt
- 19-Oct-2001.ppt
- 1、指出右图作品出现的时期和地位?.ppt
- 2.2 风险与收益分析.ppt
- 2011.10.19 第一期主编:张彦心.ppt
- 2011届高考物理二轮复习系列课件.ppt
- 3.2 苯、甲苯、二甲苯的—气相色谱法.ppt
- 4. Hotel (Lodging) Information-1.ppt
- 5 原核藻类.ppt
- 5.1 确定位置(二).ppt
- 62= 11= 34= 44=53= 32= 66=1+5=45= .ppt
- A Tire Industry Perspective on Tire Rolling Resistance.PPT
- ARCGIS三维影像制作.ppt
- Chapter 19Next Year's Marketing Plan.ppt
- Chapter 19Operations Scheduling.ppt
- Chapter 1INTRODUCTION TO CONSUMER BEHAVIOR.ppt
最近下载
- 国有企业招投标培训课件.pptx VIP
- T/CCIAT 0015-2020 建筑劳务管理标准.pdf VIP
- 拌和站施工技术交底.doc VIP
- TCCTAS 16-2020 高强钢轻量化波形梁护栏.pdf VIP
- 内科学课件15.2痛风.pptx VIP
- 重症胰腺炎【37页】.pptx VIP
- 2019版 湘艺版 高中音乐 必修1 音乐鉴赏 下篇《第五单元 外国民族民》大单元整体教学设计[2020课标].docx
- 2024党的六大纪律“廉洁纪律”.ppt VIP
- 一种化肥造粒多级干燥装置.pdf VIP
- [福建省]2025福建省海洋与渔业执法总队招聘编外人员2人笔试历年参考题库附带答案详解(5卷合辑).docx
文档评论(0)