- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 栈和队列 栈(Stack) 栈的应用 队列(Queue) 队列的应用 定义 栈的基本操作 ClearStack(S): 清除栈S中的所有元素 InitStack(S): 构造一个空栈S StackEmpty(S):判断栈S是否为空,若为空,则返回 true;否则返回false GetTop(S) : 返回S的栈顶元素,但不移动栈顶指针 Push(S, x) :插入元素x为新的栈顶元素(入栈操作) Pop(S) : 删除S的栈顶元素并返回其值(出栈操作) 顺序栈的基本操作 顺序栈的入栈操作——例如用堆栈存放(A,B,C,D) 顺序栈出栈操作——例如从栈中取出‘B’ 链栈的入栈操作和出栈操作 3.2 栈的应用举例 3.3 队列 队的实现方式是本节重点,关键是掌握入队和出队操作。具体实现依存储结构(链队或顺序队)的不同而不同。 链队列 datatype DeQueue(LinkQueue *Q) ?{ Qnode *p; datatype x; ?if (Q-front == Q-rear) {printf(队列为空,无法删除!); return FALSE;} ? ? p = Q-front-next; x = p-data; Q-front-next = p-next; if(Q-rear == p) Q-rear=Q-front;? ?free(p); ? return x; } 链队出队操作 顺序队类型定义: #define MAXSIZE 100 /* 最大队列长度 */ typedef struct { datatype data[MAXSIZE]; /* 存储队列的数据空间 */ int front; /* 队头指针,若队列不空,则指向队头元素 */ int rear; /* 队尾指针,若队列不空,则指向队尾元素的下一个位置 */ }SeqQueue; 顺序队的几种状态示意图 入队操作: rear=(rear+1)%Maxsize 出队操作: front=(front+1)%Maxaize 新问题:在循环队列中,空队特征是front=rear;队满时也会有front=rear;判决条件将出现二义性! 循环队列示意图 循环队列的几种状态 队空条件 : front = =rear (初始化时:front = rear ) 队满条件: front == (rear+1) % N (N=maxsize) 队列长度(即数据元素个数):L=(N+rear-front)% N J2 J3 J1 J4 J5 front rear 解决方案-----------人为浪费一个单元: 即front和rear二者之一指向实元素,另一个指向空闲元素(假设front指向队头元素,rear指向队尾元素的下一个位置)。 6 5 循环队列的基本操作实现 以建队、入队和出队三种基本操作为例 1)初始化一个空队列 算法要求:生成一空队列 算法操作:为队列分配基本容量空间 设置队列为空队列,其特征即: front=rear=0(也可为任意单元,如1,2,…甚至-1 ) 建队的完整算法 SeqQueue *InitQueue() { SeqQueue *q; q=(SeqQueue*)malloc(sizeof(SeqQueue)); /* 开辟一个足够大的存储队列空间 */ q-front = q-rear = 0; /* 将队列头尾指针置为零 */ return q; /* 返回队列的首地址 */ } 算法说明:向循环队列的队尾插入一个元素 分 析: (1) 插入前应当先判断队列是否满? if (( q -rear + 1 ) % Maxsize )==q-front) return false; (2)插入动作 q-data [q-rear] = x; q-rear = ( q -rear + 1 ) % Maxsize; 入队操作 队列尺寸 出队操作 算法说明:删除队头元素,返回其值 x 分 析: (1) 在删除前应当判断队列是否空? if (q-front = q-rear ) return false; (2)删除动作分析; 前面约定指针front指向队首元素的位置,故: x= q-data [ q-front ] ; q-front
您可能关注的文档
- 控制工程基础第3版 孔祥东 王益群课件 第二章新.ppt
- 控制工程基础第3版 孔祥东 王益群课件 第六章新.ppt
- 控制工程基础第3版 孔祥东 王益群课件 第三章新.ppt
- 控制工程基础第3版 孔祥东 王益群课件 第十章新.ppt
- 控制工程基础第3版 孔祥东 王益群课件 第一章新.ppt
- 企业管理 第2版 陈其林 企业管理新.ppt
- 企业纳税实务 宣国萍 商兰芳 主编项目二 2.1新.ppt
- 人因工程学 郭伏 钱省三 第5章色彩环境 讲稿新.ppt
- 上机练习 练习素材新.ppt
- 上篇第6章制冷装置的安装及调试 上篇第6章制冷装置的安装与调试新.ppt
- 数据结构——C语言描述 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS04-串新.ppt
- 数据结构——C语言描述 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS05-数组和广义表新.ppt
- 数据结构——C语言描述 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS06-树新.ppt
- 数据结构——C语言描述 王国钧 主编 唐国民 苏晓萍 马瑜 副主编 DS07-图新.ppt
- 数据库案例教程Visual_FoxPro_6.0 王咏丽 第八单元 表单设计新.ppt
- 数据库案例教程Visual_FoxPro_6.0 王咏丽 第九单元 管理系统新.ppt
- 数据库案例教程Visual_FoxPro_6.0 王咏丽 第七单元 设计报表与标签新.ppt
- 数据库案例教程Visual_FoxPro_6.0 王咏丽 第四单元新.ppt
- 旅游电子商务 杨路明 旅游电子商务01新.ppt
- 旅游电子商务 杨路明 旅游电子商务02新.ppt
最近下载
- 行政编制事业编制参公管理企业编制.doc VIP
- 参公、行政编制与事业编制的区别(修正版).docx VIP
- 22D701-3电缆桥架安装(26.9MB)(26.85MB)5ce2e72e69780631(1).pdf VIP
- 学堂在线 日语与日本文化 章节测试答案.docx VIP
- 危险化学品企业工艺平稳性关键SOP、一般SOP示例.pdf VIP
- 精密与特种加工技术(第3版):热作用特种加工技术PPT教学课件.pptx
- 公、行政编制与事业5编制的区别(修正版).doc VIP
- 港珠澳大桥主体工程桥梁工程钢箱梁制造新工艺及关键技术.ppt VIP
- 社区矫正心理测试.docx VIP
- 西双版纳傣自治州“十三五”规划研究报告.doc VIP
文档评论(0)