数据结构(第三章).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构(第三章)

数据结构 第三章 主讲人:陈频 第三章 特殊线性表——栈、队列和串 3.1栈 3.2队列 3.3串 3.4应用举例 基本要求 1.了解栈和队列逻辑特点和基本操作 2.理解顺序存储和链式存储下的实现 3.掌握队列和栈特别是栈在程序设计中的各种应用 知识结构图 引言 取托盘的经验——栈 排队的经验——队列 DestroyStack 前置条件:栈已存在 输入:无 功能:销毁栈 输出:无 后置条件:释放栈所占用的存储空间 Push 前置条件:栈已存在 输入:元素值x 功能:在栈顶插入一个元素x 输出:如果插入不成功,抛出异常 后置条件:如果插入成功,栈顶增加了一个元素 Pop 前置条件:栈已存在 输入:无 功能:删除栈顶元素 输出:如果删除成功,返回被删元素值,否则,抛出异常 后置条件:如果删除成功,栈减少了一个元素 GetTop 前置条件:栈已存在 输入:无 功能:读取当前的栈顶元素 输出:若栈不空,返回当前的栈顶元素值 后置条件:栈不变 template class T void seqStack::Push ( T x) { if (top==MAX_SIZE-1) throw “溢出”; top++; data[top]=x; } template class T T seqStack:: Pop ( ) { if (top==-1) throw “溢出”; x=data[top--]; return x; } DestroyQueue 前置条件:队列已存在 输入:无 功能:销毁队列 输出:无 后置条件:释放队列所占用的存储空间 EnQueue 前置条件:队列已存在 输入:元素值x 功能:在队尾插入一个元素 输出:如果插入不成功,抛出异常 后置条件:如果插入成功,队尾增加了一个元素 DeQueue 前置条件:队列已存在 输入:无 功能:删除队头元素 输出:如果删除成功,返回被删元素值 后置条件:如果删除成功,队头减少了一个元素 GetQueue 前置条件:队列已存在 输入:无 功能:读取队头元素 输出:若队列不空,返回队头元素 后置条件:队列不变 ⑴ 写出函数当前调用层执行的各语句,并用有向弧表示语句的执行次序; ⑵ 对函数的每个递归调用,写出对应的函数调用,从调用处画一条有向弧指向被调用函数入口,表示调用路线,从被调用函数末尾处画一条有向弧指向调用语句的下面,表示返回路线; ⑶ 在返回路线上标出本层调用所得的函数值。 谢谢! 3 递归的要素 ⑴ 递归边界条件:确定递归到何时终止,也称为递归出口; ⑵ 递归模式:大问题是如何分解为小问题的,也称为递归体。 栈的应用举例—递归 例1 阶乘函数 递归算法 int fact ( int n ) { if ( n == 0 ) return 1; else return n * fact (n-1); } - * = 时 当 时 当 )! 1 ( 1 ! n≥1 n=1 n n n 栈的应用举例—递归 求解阶乘 n! 的过程 计算 fact(4) 计算 4*fact(3) 计算 3*fact(2) 计算 2*fact(1) 计算 fact(1) 递归调用 回归求值 返回 24 返回 6 返回 2 返回1 栈的应用举例—递归 递归过程与递归工作栈 递归过程在实现时,需要自己调用自己。 层层向下递归,返回次序正好相反: 递归调用 n! (n-1)! (n-2)! 1!=1 返回次序 栈的应用举例—递归 特殊线性表——队列 队列的逻辑结构 空队列:不含任何数据元素的队列。 队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。 (a1, a2, ……, an) 队尾 队头 队列的操作特性:先进先出 a1 a2 a3 入队 队尾 队头 出队 特殊线性表——队列

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档