数据结构CC版第3章 学习栈的使用.pptx

数据结构CC版第3章 学习栈的使用.pptx

ID:52841345

大小:927.84 KB

页数:32页

时间:2020-03-22

数据结构CC版第3章 学习栈的使用.pptx_第1页
数据结构CC版第3章 学习栈的使用.pptx_第2页
数据结构CC版第3章 学习栈的使用.pptx_第3页
数据结构CC版第3章 学习栈的使用.pptx_第4页
数据结构CC版第3章 学习栈的使用.pptx_第5页
资源描述:

《数据结构CC版第3章 学习栈的使用.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构(C语言版)项目三学习栈的使用在本项目中,通过1个工作任务,向读者展示栈的使用情况。目录任务绘制迎风飞扬的奥运红旗利用栈判断括号匹配情况准备知识利用栈判断括号匹配情况栈的概述栈的抽象数据类型和基本操作栈的顺序存储结构栈的链式存储结构递归的概述河内塔(Hanoitower)问题1.栈的概述1.栈的概述栈(Stack),也可称为堆栈,是一种限制访问的线性表,是一种特殊的串行形式的数据结构。它的特殊之处在于只能允许在线性表的一端(称为栈顶端,top)进行插入(称为栈的压入,push)和删除(称为栈的弹出,pop

2、)的运算,而栈的另一端则称为栈底(Bottom)。栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO,LastInFirstOut)的原理运作。当栈中没有元素时称为空栈。栈的插入操作被形象地称为进栈或入栈,删除操作称为出栈或退栈。不含元素的空表称为空栈。假设栈s=(a1,a2,a3,...,an),a1元素所在的位置称为栈底,an元素所在的位置称为栈顶,如下图所示。1.栈的概述栈进栈顺序是a1,a2,a3,...,an,退栈的第一个元素是an,最后一个元素是a1。栈简记为S,是一个二元组,其形式定义为:S

3、=(D,R)其中:D是数据元素的有限集合。R是数据元素之间关系的有限集合。拓展提高:这种数据结构通常用来保存一些尚未处理而又等待处理的数据项,这些数据项的处理是依据后进先出的规则。2.栈的抽象数据类型和基本操作2.栈的抽象数据类型和基本操作栈的基本操作主要包括栈顶的插入和删除操作,除此之外,还有栈的初始化、清空及取栈顶元素等。知识点链接与线性表一样,栈的存储方式也有两种:顺序存储和链表存储。3.栈的顺序存储结构3.栈的顺序存储结构顺序栈(stackwithimplementationofsequentiallis

4、t)是使用顺序存储结构的栈,是分配一块连续的存储区域,依次存放自栈底到栈顶的数据元素,同时设指针top来动态地指示栈顶元素的当前位置。拓展提高:栈的应用非常广泛,在一个程序中经常会同时使用多个栈。如果使用顺序存储结构的栈,空间大小难以准确估计。这样使得有的栈溢出,有的栈还有空闲空间。为了解决这个问题,可以让多个栈共享一个足够大的连续向量空间(数组),通过利用栈的动态特性来使其存储空间互相补充,这就是多栈的共享技术。4.栈的链式存储结构4.栈的链式存储结构栈也可以采用单链表的方式存储。链式栈(stackwithim

5、plementationoflinkedlist)的存储结构如下图所示,是一个单链表结构。栈顶指针是链表的第一个结点,栈底指针指向链表的最后一个结点。栈的链式存储结构链式栈的一种类型说明如下:typedefstructnode{Elemtypedata;/*数据域*/structnode*next;/*指针域*/}*LinkedStack;4.栈的链式存储结构5.递归的概述5.递归的概述递归(Recursion),是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面

6、镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。对于算法而言,一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归的。根据调用方式的不同,它分为直接递归和间接递归。知识点链接把递归作为一种主要用于设计和描述简单算法的工具,对于不熟悉它的编程人员而言是很难接受的。递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时间和空间开销。所以,递归比其他替代选择(诸如while循环)等所花费的代价更

7、大。但是,递归通常提供了一种能合理、有效地解决某些问题的算法。6.河内塔(Hanoitower)问题6.河内塔(Hanoitower)问题佛教中确实有“浮屠”(塔)这种建筑;有些浮屠亦遵守上述规则而建。“河内塔”一名可能是由中南半岛在殖民时期传入欧洲的。3个盘子的Hanoi塔问题移动过程如下图所示。3个盘子的Hanoi塔问题6.河内塔(Hanoitower)问题任务实施张饶是某公司程序员,因目前项目的需要,他需要使用栈来编写程序。要求能够判断出现的括号是否成对匹配。利用栈判断括号匹配情况任务:利用栈判断括号匹配情

8、况任务分析:理解牢记!由于栈的功能与作用,可以迅速判断用户输入信息。因此,张饶决定使用栈来完成此任务。任务:利用栈判断括号匹配情况任务实施利用栈判断括号匹配情况张饶利用栈判断括号匹配问题。对于给定的一个字符串,判断字符串中的“(”与“)”以及“[”与“]”是否成对出现。算法分析:在检验算法中可设置一个栈,每读入一个括号,若是左括号,则直接入栈,等待相匹配的同类右括号;若读

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。