网站大量收购独家精品文档,联系QQ:2885784924

数据结构--第三章栈和队列教学幻灯片.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学课件课件PPT医学培训课件教育资源教材讲义

第3章 限定性线性表—栈和队列;栈和队列是两种常用的数据类型;3.1 栈;3.1.1 栈的定义:;InitStack(S) 初始化一个空栈 S。;二、进栈、出栈图例;3.1.2 栈的表示和实现;一、顺序栈;2、顺序栈中的进栈和出栈图例;3. 顺序栈的基本操作特点;4)进栈;5)出栈;6) 取栈顶元素;〖例〗设有一个空栈,栈顶指针为1000H,现有输入序列为12345,PUSH , PUSH , POP , PUSH , POP , PUSH , PUSH后,输出序列为______,栈顶指针为_______ ;〖例〗在一个n个单元的顺序栈中,假定以地址高端(下标为n-1的单元)作为栈底,则向栈中压入一个元素时,栈顶指针top的变化是______ top 不变 top=n top=top-1 top=top+1;〖例〗若一个栈的输入序列是1,2,…,n,输出序列的第一个元素是n,则第i个输出元素是______ n-i n-i+1 i n-i-1;方法一:将栈的容量加到足够大,但这种方法由于事先难以估计容量,有可能浪费空间。; 利用栈“栈底位置不变,而栈顶位置动态变化”的特性,为两个栈申请一个共享的一维数组空间S[M],将两个栈的栈底分别放在一维数组的两端,分别是0,M-1。 ;6、两栈共享的数据结构定义;7、两栈共享基本操作的实现;2) 两栈共享的进栈操作算法;3) 两栈共享的出栈操作算法;〖例〗设有一个输入序列123,元素经过一个栈到达输出序列,并且元素一旦离开输入序列就不能再回到输入序列,试问经过这个栈后可以得到多少种输出序列? 分析:每一元素只能做一次入栈、一次出栈,可以入栈后停留一段时间,然后到达输出序列。那么该题就变为如何安排三次push操作(s)和pop操作(x)的顺序以得到尽量多的不同的输出。 sssxxx: 321 ssxsxx: 231 ssxxsx:213 sxsxsx: 123 sxssxx:132;补充: 如果进栈的序列为123456,能否得到435612和 135426的出栈序列,并说明为什么不能得到或 者如何得到(写出以‘S’表示进栈, ‘x’表示出栈 的栈操作序列) ;二、 链栈;链栈的基本操作特点;1、链栈的存储结构定义;2、链栈基本操作的实现;2)链栈的出栈操作;3.1.3 栈的应用举例;分析可能出现的不匹配的情况:;算法的设计思想:;括号匹配算法:;例2、 数制转换;十进制转换为二进制(例如:25) 有 余 数 是 1 没 余 数 是0 25除2=12......1 12除2=6 ...... 0 6 除2=3 ...... 0 3 除2=1 ...... 1 1 除2=0 ...... 1 然后我们将余数按“从下往上”的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式 ;数制转换算法 void Conversion(int N) /*对任意非负十进制数N,打印等值的八进制数*/ { Stack S; int x; /*S为顺序栈或链栈*/ InitStack(S); while(N0) { x=N%8; Push(S, x); N=N/8; } while(!IsEmpty(S)) { Pop(S,x); printf(“%d”,x); } };3.1.4 栈与递归的实现; 从被调用函数返回调用函数之前, 应该完成下列三项任务:;多个函数嵌套调用的规则是:;递归工作栈:递归函数执行过程中占用的数据区 工 作 记 录: 每一层的参数、局部变量、返回地 址等构成的记录(数据区) 当前活动记录:栈顶工作记录(当前函数数据区) 当前环境指针:递归工作栈的栈顶指针,指向当前 活动记录。(指示当前函数数据区);例Hanoi塔问题:有3个塔座x, y, z, 在塔座x上插有n个大小不同的圆盘, 从小到大且自上而下编号为1,2,…n; 按规则将它们一个个搬到塔座z上, y可用作辅助塔座。 规则为: (1) 每次只能移动一个圆盘; (2) 圆盘可放在任意塔座上; (3)任何时刻塔座上都不得将大盘压在小盘之上。;void hanoi (int n; char x, char y,char z) /* 将塔座x上按直径由小到大且至上而下编号为1至n的 n个圆盘按规则搬到塔座z上,y可用作辅助塔座。*/ 1 { 2 IF (

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档