数据结构(C C++版)第3章 学习栈的使用.pptxVIP

数据结构(C C++版)第3章 学习栈的使用.pptx

  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文档。上传文档
查看更多
数据结构(C语言版) / 项目三学习栈的使用在本项目中,通过1个工作任务,向读者展示栈的使用情况。 任务目录绘制迎风飞扬的奥运红旗准备知识利用栈判断括号匹配情况利用栈判断括号匹配情况栈的概述栈的抽象数据类型和基本操作栈的顺序存储结构栈的链式存储结构递归的概述河内塔(Hanoi tower)问题1.栈的概述栈(Stack),也可称为堆栈,是一种限制访问的线性表,是一种特殊的串行形式的数据结构。它的特殊之处在于只能允许在线性表的一端(称为栈顶端,top)进行插入(称为栈的压入,push)和删除(称为栈的弹出,pop)的运算,而栈的另一端则称为栈底(Bottom)。栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。当栈中没有元素时称为空栈。栈的插入操作被形象地称为进栈或入栈,删除操作称为出栈或退栈。不含元素的空表称为空栈。假设栈s=( a1, a2, a3, ..., an),a1元素所在的位置称为栈底,an元素所在的位置称为栈顶,如下图所示。 1.栈的概述 1.栈的概述 栈进栈顺序是a1, a2, a3, ..., an,退栈的第一个元素是an,最后一个元素是a1。栈简记为S,是一个二元组,其形式定义为: S=(D, R)其中:D是数据元素的有限集合。R是数据元素之间关系的有限集合。拓展提高:这种数据结构通常用来保存一些尚未处理而又等待处理的数据项,这些数据项的处理是依据后进先出的规则。2. 栈的抽象数据类型和基本操作 2.栈的抽象数据类型和基本操作栈的基本操作主要包括栈顶的插入和删除操作,除此之外,还有栈的初始化、清空及取栈顶元素等。知识点链接与线性表一样,栈的存储方式也有两种:顺序存储和链表存储。3.栈的顺序存储结构 3.栈的顺序存储结构顺序栈(stack with implementation of sequential list)是使用顺序存储结构的栈,是分配一块连续的存储区域,依次存放自栈底到栈顶的数据元素,同时设指针top来动态地指示栈顶元素的当前位置。拓展提高:栈的应用非常广泛,在一个程序中经常会同时使用多个栈。如果使用顺序存储结构的栈,空间大小难以准确估计。这样使得有的栈溢出,有的栈还有空闲空间。为了解决这个问题,可以让多个栈共享一个足够大的连续向量空间(数组),通过利用栈的动态特性来使其存储空间互相补充,这就是多栈的共享技术。4.栈的链式存储结构栈也可以采用单链表的方式存储。链式栈(stack with implementation of linked list)的存储结构如下图所示,是一个单链表结构。栈顶指针是链表的第一个结点,栈底指针指向链表的最后一个结点。 4.栈的链式存储结构栈的链式存储结构链式栈的一种类型说明如下:?typedef struct node {Elemtype data; /*数据域 */struct node *next; /*指针域 */} *LinkedStack; 4.栈的链式存储结构5.递归的概述递归(Recursion),是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。对于算法而言,一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归的。根据调用方式的不同,它分为直接递归和间接递归。 5.递归的概述知识点链接把递归作为一种主要用于设计和描述简单算法的工具,对于不熟悉它的编程人员而言是很难接受的。递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时间和空间开销。所以,递归比其他替代选择(诸如while循环)等所花费的代价更大。但是,递归通常提供了一种能合理、有效地解决某些问题的算法。6.河内塔(Hanoi tower)问题佛教中确实有“浮屠”(塔)这种建筑;有些浮屠亦遵守上述规则而建。“河内塔”一名可能是由中南半岛在殖民时期传入欧洲的。3个盘子的Hanoi塔问题移动过程如下图所示。 6.河内塔(Hanoi tower)问题 6.河内塔(Hanoi tower)问题 3个盘子的Hanoi塔问题任务实施任务:利用栈判断括号匹配情况利用栈判断括号匹配情况张饶是某公司程序员,因目前项目的需要,他需要使用栈来编写程序。要求能够判断出现的括号是否成对匹配。理解牢记!任务分析:任务:利用栈判断括号匹配情况由于栈的功能与作用,可以迅速判断用户输入信息。因此,张饶决定使用栈来完成此任务。任务实施 利用栈判断括号匹配情况张饶利用栈判断括号匹配问题。对于给定的一个字符串,判断字符串中的“(”与“)”以及“[”与“]

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档