数据结构(CC++语言版)第三篇 章 队列、栈和串.ppt

数据结构(CC++语言版)第三篇 章 队列、栈和串.ppt

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

第三章 特殊线性表;1、编号为1,2,3,4的四辆列车,顺序开进一个栈式结构的站点,问开出车站的顺序有多少种可能?请具体写出所有可能的出栈序列。 2、设有数组A[1..m],分配给两个栈S1和S2使用,如何分配数组空间,使得对任何一个栈,当且仅当数组空间全满时才不能插入。试说明你的分配方法。 3、现有中缀表达式E=((A-B)/C+D*(E-F))*G (1)写出与E等价的后缀表达式。 (2)用一个运算符栈来模拟表达式的转换过程,画出在将E转换成后缀表达式的过程中,栈内容的变化图。 (3)用一个操作数栈来模拟后缀表达式的求值过程,画出对(2)中所得到的后缀表达式求值时,栈中内容的变化图。 ;4、设计一个算法,它使用两个栈,一个栈存放操作数,另一个栈存放运算符。把已知算术表达式(中缀表示)的字符串作为输入,计算算术表达式的值。 5、假设以一维数组Q[0..m-1]存储循环队列的元素。若要使这m个分量都得到利用,则需另设一个标志tag,以tag为0或1来区分尾指针和头指针值相同时队列的状态是“空”还是“满”。试编写与此结构相应的插入和删除算法,并从时间和空间角度讨论设标志和不设标志这两种方法的使用范围(如当m较小而队列中每个元素占的空间较多时,哪一种方法较好)。 ;;研究内容; 3.1 特殊线性表——栈;a1;栈的操作特性:后进先出;例:有三个元素按a、b、c的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有多少种?; 3.1 特殊线性表——栈; 3.1 特殊线性表——栈; 3.1 特殊线性表——栈;例:对于一个栈,给出输入项A、B、C,如果输入项序列由ABC组成,试给出所有可能的输出序列。 A进 A出 B进 B出 C进 C出 ABC A进 A出 B进 C进 C出 B出 ACB A进 B进 B出 A出 C进 C出 BAC A进 B进 B出 C进 C出 A出 BCA A进 B进 C进 C出 B出 A出 CBA 不可能产生输出序列 CAB 思考: 假如输入项为A、B、C、D, 则输出序列是哪些?;;栈的抽象数据类型定义 ;DestroyStack 前置条件:栈已存在 输入:无 功能:销毁栈 输出:无 后置条件:释放栈所占用的存储空间 Push 前置条件:栈已存在 输入:元素值x 功??:在栈顶插入一个元素x 输出:如果插入不成功,抛出异常 后置条件:如果插入成功,栈顶增加了一个元素 ;Pop 前置条件:栈已存在 输入:无 功能:删除栈顶元素 输出:如果删除成功,返回被删元素值,否则,抛出异常 后置条件:如果删除成功,栈减少了一个元素 GetTop 前置条件:栈已存在 输入:无 功能:读取当前的栈顶元素 输出:若栈不空,返回当前的栈顶元素值 后置条件:栈不变;Empty 前置条件:栈已存在 输入:无 功能:判断栈是否为空 输出:如果栈为空,返回1,否则,返回0 后置条件:栈不变 endADT;栈的顺序存储结构及实现 ;出栈:top减1; 顺序栈类的声明;顺序栈的实现——入栈;顺序栈的实现——出栈;两栈共享空间 ;两栈共享空间:使用一个数组来存储两个栈,让一个栈的栈底为该数组的始端,另一个栈的栈底为该数组的末端,两个栈从各自的端点向中间延伸。;栈1的底固定在下标为0的一端; 栈2的底固定在下标为StackSize-1的一端。 top1和top2分别为栈1和栈2的栈顶指针; Stack_Size为整个数组空间的大小(图中用S表示);;两栈共享空间;两栈共享空间;两栈共享空间;1. 如果栈满,则抛出上溢异常; 2. 判断是插??栈1还是栈2; 2.1 若在栈1插入,则 2.1.1 top1加1; 2.1.2 在top1处填入x; 2.2 若在栈2插入,则 2.2.1 top2减1; 2.2.2 在top2处填入x;;1. 若是在栈1删除,则 1.1 若栈1为空栈,抛出下溢异常; 1.2 删除并返回栈1的栈顶元素; 2. 若是在栈2删除,则 2.1 若栈2为空栈,抛出下溢异常; 2.2 删除并返回栈2的栈顶元素;;栈的链接存储结构及实现 ;栈的链接存储结构及实现 ;算法描述: template class T void Link

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档