使用堆栈解决编程问题.ppt

使用堆栈解决编程问题.ppt

ID:52510161

大小:2.16 MB

页数:22页

时间:2020-04-09

使用堆栈解决编程问题.ppt_第1页
使用堆栈解决编程问题.ppt_第2页
使用堆栈解决编程问题.ppt_第3页
使用堆栈解决编程问题.ppt_第4页
使用堆栈解决编程问题.ppt_第5页
资源描述:

《使用堆栈解决编程问题.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、使用堆栈解决编程问题数据结构(C#语言版)目标在本章中,你将学到:识别堆栈的特性实施堆栈运用堆栈来解决编程问题学习情境——用堆栈解决火车车厢重排问题的编程[问题描述]一列货运列车共有n节车厢,每节车厢将停放在不同的车站。假定n个车站的编号分别为1-n,货运列车按照第n站至第1站的次序经过这些车站。车厢的编号与它们的目的地相同。为了便于从列车上卸掉相应的车厢,必须重新排列车厢,使各车厢从前至后按编号1到n的次序排列。当所有的车厢都按照这种次序排列时,在每个车站只需卸掉最后一节车厢即可。我们在一个转轨站里完成车厢的重排工作,在转轨站中有一个入轨、一个出轨和k个缓冲铁轨(位于入轨和出轨之

2、间)。图3.1a给出了一个转轨站,其中有k=3个缓冲铁轨H1,H2和H3。开始时,n节车厢的货车从入轨处进入转轨站,转轨结束时各车厢从右到左按照编号1至编号n的次序离开转轨站(通过出轨处)。在图3.1a中,n=9,车厢从后至前的初始次序为5,8,1,7,4,2,9,6,3。图3.1b给出了按所要求的次序重新排列后的结果。学习情境——用线性表解决学生成绩表的编程[问题描述](续)根据上面的描述,编写程序实现下面的功能:编写一算法实现火车车箱的重排;编写程序模拟图3.1所示的具有9节车厢的火车入轨和出轨的过程。程序主界面设计如图3.2所示。让我们来玩Rummy(拉米纸牌)的游戏。堆栈7

3、77777776666666666666666认识堆栈——分析堆栈的逻辑结构堆栈(Stack)是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。堆栈就是一个只能访问其末尾数据的数据集,这一端也叫做顶部。数据仅能在顶部进行插入和删除操作。最新插入的数据将被最先删除。因此,堆栈也被称为后进先出数据结构(Last-In-First-Out)。认识堆栈——分析堆栈的逻辑结构1.堆栈的定义2.堆栈的特征堆栈也被称为后进先出数据结构(Last-In-First-Out)。初始化栈:也就是产生一个新的空栈;入栈操作Push(Tx):将指定类型元素x进到栈中;出栈操作TPop(

4、):将栈中的栈顶元素取出来,并在栈中删除栈顶元素;取栈顶元素GetTop():将栈中的栈顶元素取出来,栈中元素不变;判断栈空IsEmpty():若栈为空,返回true,否则返回false;清空操作Clear():从栈中清除所有的数据元素。认识堆栈——识别堆栈的基本操作堆栈的基本操作有以下几种:下面描述堆栈的进栈操作PUSH:它是在堆栈顶部插入新元素的过程。EmptyStack1PushanElement1认识堆栈——识别堆栈的基本操作PUSH:它是在堆栈顶部插入新元素的过程。下面描述堆栈的进栈操作1PushanElement22PushanElement33认识堆栈——识别堆栈的基

5、本操作POP:它是从堆栈顶部删除元素的过程。下面描述堆栈的出栈操作1POPanElement323POPanElement2认识堆栈——识别堆栈的基本操作堆栈中的元素按___________基础进行添加和删除。课间思考答案:LIFO用一片连续的存储空间来存储栈中的数据元素,这样的栈称为顺序栈(SequenceStack)。类似于顺序表,用一维数组来存放顺序栈中的数据元素。栈顶指示器top设在数组下标为0的端,top随着插入和删除而变化,当栈为空时,top=-1。用顺序栈解决堆栈的编程问题——用顺序栈表示堆栈初始化顺序栈就是创建一个空栈,即调用SeqStack的构造函数,在构造

6、函数中执行下面的步骤:1.初始化顺序栈用顺序栈解决堆栈的编程问题——对顺序栈进行操作步骤操作1初始化maxsize为实际值2为数组申请可以存储maxsize个数据元素的存储空间,数据元素的类型由实际应用而定3初始化top为的值为-1Push操作是将一个给定的项保存在堆栈的最顶端,顶端元素的索引保存在变量top中,因此要进行Push操作,需要执行下面的步骤:2.入栈操作:Push(Telem)用顺序栈解决堆栈的编程问题——对顺序栈进行操作步骤操作1判断堆栈是否是满的,如果是,停止操作;否则执行下面的步骤2将top的值加13设置索引为top的数组元素的值为elemPop操作就是从堆栈的

7、顶部取出数据。要进行Pop操作,需要执行以下的步骤:3.出栈操作:TPop()用顺序栈解决堆栈的编程问题——对顺序栈进行操作步骤操作1检查堆栈中是否含有元素,如果没有,停止操作;否则执行下面的步骤2获取索引top中的值3将索引top的值减1取栈顶元素操作与出栈操作相似,只是取栈顶元素操作不改变原有堆栈,不删除取出的元素。4.取栈顶元素:GetTop()用顺序栈解决堆栈的编程问题——对顺序栈进行操作步骤操作1检查堆栈中是否含有元素,如果没有,停止操作;否则执行下面的步骤

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

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

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