《第3章栈和队》.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 栈和队列 栈的定义及运算 栈的基本运算 3.1.2顺序栈及相关算法 顺序栈运算 栈的共享 3.1.3链式栈及相关算法 链式栈运算 3.2 栈应用举例 栈应用举例(数制转换) 栈应用举例(括号匹配) 3.3 栈与递归函数 栈与递归 栈与递归(递归函数) 栈与递归( hanoi塔) 栈与递归( hanoi塔) 3.4 队列的定义及运算 2.队列的基本运算 循环队列 循环队列的运算 循环队列的运算 循环队列的运算 循环队列的运算 3.4.3 链式队列及相关算法 链式队列及相关算法 链式队列及相关算法 3.5 队列应用举例 迷宫问题 迷宫问题 迷宫问题 3.5.2离散事件模拟 离散事件模拟 离散事件模拟 离散事件模拟 第三章小结 停车场进出车事件模拟:设停车场可停放若干辆汽车,且只有一个大门可供汽车出入。顾客的汽车随时到来,也可随时开走。汽车在车场内按到达的先后顺序,依次由里向外排列。若停车场车辆已满,后来的汽车只能在车场外的便道上排队等候。一旦车场内有汽车开走,则便道上的第一辆车可开入。另设当停车场内某车要开走时,在它之后的车必须先退到临时车场为其让路,待汽车开走后,为它让路的车再按原次序进入车场。如图3.28所示。 停 车 场 出入口 临时 车 场 出入口 (便道) 图3.28 出入口 出入口 (栈) 信号 车号 (临时栈) A:驶入 D:驶出 126 A 1 2 6 A 1 2 1 121 D 1 2 3 A 1 2 7 127 128 A 1 2 8 122 A 1 2 2 123 A 1 2 3 124 A 1 2 4 125 A 1 2 5 125 124 123 124 125 (队列) 图3.30 126 * 栈和队列逻辑上也是线性表。但对这种表的运算只是作用在表的某些元素上,属于运算受限制的线性表或称为限定性数据结构。栈和队列技术虽然简单,但在软件实现中有广泛的应用。本章讨论栈和队列的逻辑和存储表示、运算及相关算法的实现等问题,并例举了一些栈和队列的典型应用。 3.1栈的定义及运算 1.定义:栈(stack)逻辑上是一种线性表,记为栈S=(a0,a1,…,an-1 )。 对栈S的运算(插入、删除等)限定在表的一端进行,如图3.1所示。 an-1 … a1 a0 栈顶top 栈底bottom 图3.1 X X 进栈 X出栈 若元素进栈顺序为a0,a1,…,an-1,则出栈顺序是an-1,an-2,…,a0,即后进栈的元素先出栈,故栈可称作“后进先出”(Last In First Out,LIFO)的线性表。当表中元素为空时,称“栈空”。若栈的存储空间已满,再作进栈运算时称“栈满溢出”。 2. 栈S 的基本运算 (1)置栈空:Clearstack(s)。 (2)求栈的长度:Lenstack(s)。 (3)判栈空否:Emptystack(s)。 返回True或False(约定True=1,False=0)。 (4)取栈顶元素: Getstop(s) 。 (5)进栈:push(s , x)。 (6)出栈:pop(s)。 例3-1 设元素为1,2,3,4,进栈顺序约定:值小的元素先进栈,但在两次进栈之间,可作出栈运算。问对于进栈序列(1,2,3,4),可得到多少种出栈序列? 显然(1,2,3,4)可为一个出栈序列:1进栈,1出栈;2进栈,2出栈;3进栈,3出栈;4进栈,4出栈。但(4,2,3,1)是得不到的一种出栈序列(为什么?)。 an-1 X … … a1 a0 top 进栈 出栈 根据约定条件,诸如(4,2,3,1)这样的出栈序列是不能得到的。因为要使出栈序列之首为“4”,栈的状态如图3.2所示。 将“4”弹出后,根据LIFO规则,下一个出栈的应为“3”,而不是“2”。 各出栈序列如下: ( 1,

文档评论(0)

沙卡娜 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档