第3章 数据结构的栈和队列资料.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数 据 结 构 课程代码2331 limin_chang@126.com 2012.11.11 第3章 栈和队列 栈 队列 栈和队列的应用实例 栈的定义 栈的定义及基本运算 栈:后进先出的线性表(LIFO)。 栈的基本运算 InitStack ( S ); StackEmpty ( S ); StackFull ( S ); Push ( S , x ); Pop ( S ); StackTop ( S ); 顺序栈 顺序栈:栈的顺序存储结构。 顺序栈的类型定义:P33页 基本定义: 空栈:S―top 0 栈满: S―top = StackSize -1 下溢:栈空时退栈 上溢:栈满时入栈 顺序栈六种基本运算的实现:P33-P34页 链栈 链栈:栈的链式存储结构。 链栈的类型定义:P35页 链栈六种基本运算的实现:P36页 注:由于链栈的存储空间是动态分配的,我们不考虑内存不够用的情况,所以链栈没有上溢,不存在栈满的情况。 队列 队列的定义及基本运算 队列的定义:P37页 队列:先进先出(FIFO)的线性表。 队列有六种基本操作 InitQueue ( Q ); QueueEmpty ( Q ); QueueFull ( Q ); EnQueue ( Q , x ); DeQueue ( Q ); QueueFront ( Q ); 顺序队列 顺序队列:队列的顺序存储结构。 基本概念: 队头指针:front(指向队头元素) 队尾指针:rear (指向队尾元素的下一个位置) 上溢 下溢 假上溢 循环队列:存储在循环向量中的队列。 顺序队列和循环队列的操作示意图:P38页 循环队列 循环队列 循环队列的类型定义:P39页 循环队列的上溢判定方法 1、设布尔变量记录 2、少用一个元素空间 3、设计数器 循环队列的六种基本操作的具体实现:P39-P40页 链队列 链队列:队列的链式存储结构。 链队列的类型定义:P41页 链队列的五种基本操作的具体实现:P41-P42页 注:链队列和链栈类似,不存在上溢的情况,原因在于我们假定内在是足够大的。 栈和队列的应用 1、数制转换 2、栈与递归 3、舞伴问题 栈的应用-括号匹配的检验 前提:表达式中只有两种括号,圆括号和方括号 假设:在表达式中括号嵌套的顺序任意 比如:([]())或[([ ][ ])]等 为正确的格式! 比如[( ])或([( ))或 (()]) 为不正确的格式! 要求:撰写一算法验证输入的括号序列是否是正确的 解决: 检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。 例如:考虑下列括号序列: [ ( [ ] [ ] ) ] 1 2 3 4 5 6 7 8 每遇到一个括号就可能出现以下几种情况: 1、来了个左括号 2、来了个右括号 右括号是所“期待”的 右括号不是所“期待”的 3、还剩余括号,直到结束也没有到来所“期待”的括弧 算法的设计思想: 1)凡出现左括弧,则进栈; 2)凡出现右括弧,首先检查栈是否空 若栈空,则表明该“右括弧”多余, 否则和栈顶元素比较, 若相匹配,则“左括弧出栈” , 否则表明不匹配。 3)表达式检验结束时, 若栈空,则表明表达式中匹配正确, 否则表明“左括弧”有余。 我们来练习一下 为了解决计算机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。 A. 栈 B. 队列 C. 树 D. 图 我们来练习一下 某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a、b、c、d、e依次入此队列后再进行出队操作,则不可能得到的出队序列是 ( )。 A. bacde     B. dbace   C. dbcae   D. ecbad 我们来练习一下 设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是( )。 A. 1 B. 2 C. 3 D. 4 我们来练习一下 一个栈的入栈序列为A,B,C,D,E,则栈的不可能的出栈序列是 。 A. A,B,C,D,E    B. E,D,C,B,A   C. D,E,C,B,A   D. D,C,E,A,B

文档评论(0)

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

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

1亿VIP精品文档

相关文档