- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
尚辅网 / 数据结构与算法实用教程 主编 高佳琴 第4章 栈与队列 本章要点: 1)栈的定义和结构特点,栈的存储方式(顺序存储与链接存储)和基本操作的实现算法。 2)队列的定义和结构特点,队列的存储方式和基本操作的实现算法。 3)栈和队列的应用。 本章难点: 1)栈的特性,栈的存储结构,栈的基本操作实现算法。 2)队列基本操作的实现算法。 3)栈和队列的应用。 4.1 栈 4.1.1 栈的基本概念4.1.2 栈的存储方式和基本操作的实现算法 4.1.1 栈的基本概念 栈(stack)是限定在表的一端进行插入或删除操作的线性表。插入元素操作称为入栈,删除元素操作称为出栈。 1)顺序栈为空,这是初始化栈后的结果。2)元素A入栈,此时top=0。3)元素B、C、D入栈,此时top=3。4)执行两次出栈操作,元素D、C出栈,此时top=1。5)再执行两次出栈操作后,栈回到初始状态,top=-1。 4.1.1 栈的基本概念 图4-1 栈的示意图 4.1.1 栈的基本概念 图4-2 栈顶指针和栈中元素之间的关系 4.1.2 栈的存储方式和基本操作的实现算法 (1)初始化栈 InitStack(S)。(2) 入栈 PushStack(S,x)。(3) 出栈 PopStack(S)。(4) 获取栈顶元素内容 GetTopStack(S)。(5) 判断栈是否为空 IsNullStack (S)。1.栈的顺序存储2.栈的链式存储 1.栈的顺序存储 图4-3 顺序栈 (1)栈空(2)栈满(3)入栈操作(4)出栈操作 1.栈的顺序存储 图4-4 入栈操作算法流程 1.栈的顺序存储 图4-5 出栈操作算法流程 2.栈的链式存储 图4-6 栈的链式存储结构 图4-7 链栈的操作a)含有两个元素的栈 b)插入元素后的栈 c)删除两个元素后的栈 2.栈的链式存储 (1)空栈(2)栈满(3)入栈操作(4)出栈操作 图4-8 出栈操作算法流程 4.2 队列 4.2.1 队列的基本概念4.2.2 队列的基本操作4.2.3 队列的存储方式和基本操作的实现算法 4.2.1 队列的基本概念 图4-9 队列示意图 队列(queue)是一种特殊的线性表。它的特点是插入操作限定在表的一端进行,而删除操作则限定在表的另一端进行。允许删除操作的一端称为队头(front),允许插入操作的一端称为队尾( rear), 4.2.2 队列的基本操作 (1) 初始化队列 InitQueue(q)。(2) 入队 EnterQueue(q,x)。(3) 出队 DelQueue(q,x)当队列中有元素存在时,删除队头元素,返回队头元素的值,且其后继为新的队头元素,队列减少一个元素。(4) 获取队头元素内容 getfirstQueue(q,x)。(5) 判断队列是否为空 IsNullQueue(q)。 4.2.3 队列的存储方式和基本操作的实现算法 1.顺序队列的数据类型2.顺序队列中的溢出现象3.循环队列的结构及实现 1.顺序队列的数据类型 (1)初态(2)队空状态(3)队满状态(1)入队操作(2)出队操作 2.顺序队列中的溢出现象 (1)“下溢”现象 当队列为空时,作出队运算产生的溢出现象。(2)“真上溢”现象 当队列满时,做入队运算产生空间溢出的现象。(3)“假上溢”现象 顺序队列的入队和出队并不是完全像现实生活中的排队,一个人出队后,其他人依次向前移动,而是队头位置在移动。 图4-10 “假上溢”示意图 3.循环队列的结构及实现 图4-11 循环队列示意图 3.循环队列的结构及实现 图4-12 第二种方法示意图 3.循环队列的结构及实现 图4-13 入队操作算法流程图 3.循环队列的结构及实现 图4-14 出队操作算法流程图 4.3 栈与队列的应用 4.3.1 栈的应用4.3.2 队列的应用 4.3.1 栈的应用 1) 若N≠0,则将N%r压入栈s中,执行2);若N=0,将栈s的内容依次出栈,算法结束。2) 用N/r代替N。1)当栈已空,串中还有右括弧,说明已检测部分的右括弧多于左括弧,不配对;2)当括号串已检测空,栈还有左括弧,说明左括弧多于右括弧,不配对;3)当括号串检测完时,栈也空了,说明左括弧等于右括弧,配对。 2) 用N/r代替N。 表格 4.3.2 队列的应用 1)栈是一种只允许在一端进行插入和删除的线性表,栈顶元素总是最后入栈的,因而最先出栈;栈底元素总是最先入栈的,因而也是最后出栈。2)栈的顺序存储结构。3)栈的链式存储结构。4)队列。 习题 1.填空题2.简答题3.写出下列程序段的运行结果(程序中的元素类型是char)4.算法设计
您可能关注的文档
- 智能建筑理论与工程实践课件作者程大章节第4章节.ppt
- 微型计算机原理及接口技术课件作者林志贵第1章节微型计算机基础知识.ppt
- 数控机床编程与操作第2版课件作者穆国岩7-4刀具半径补偿(改).ppt
- 微型计算机原理及接口技术课件作者林志贵第5章节PC总线.ppt
- 数控机床编程与操作第2版课件作者穆国岩项目7简单循环.ppt
- 数控机床编程与操作课件作者杜家熙第1章节概述(minimizer).ppt
- 数控机床编程与操作课件作者杜家熙第3章节数控车削编程(minimizer).ppt
- 数控机床编程与操作课件作者杜家熙第4章节数控铣削加工编程技术(minimizer).ppt
- 数控机床编程与操作课件作者杜家熙第5章节加工中心用加工程序编制与操作(minimizer).ppt
- 数控机床编程与操作课件作者杜家熙第6章节数控线切割机床的操作与编程(minimizer).ppt
文档评论(0)