- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 栈与队列;第3章 栈与队列;3.1 栈;3.1 栈; 向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素。;(1)InitStack()初始化操作,建立一个空栈S。
(2)GetTop(S, x )取栈顶元素操作,若栈S不空,则取栈顶元素,用 x 返回栈顶元素。
(3)Push(S, x )进栈操作,在S栈的栈顶压入一个元素 x 。
(4)Pop(S, x )出栈操作,删除已存在且非空的栈S的栈顶元素,用 x 返回栈顶元素。
(5)Empty(S)判断一个栈是否为空,若S为空栈,返回一个真值。;3.1.2 栈的顺序存储结构及其运算; 当有新元素进栈时,栈顶指针向上移动,top加1。当有元素出栈时,栈顶指针向下移动,top减1。
用数组element[MAXLEN]作为栈的存储空间,element[top]为栈顶元素,当top= -1时栈为空;当top=0时,栈中有一个元素;当top=MAXLEN-1时,表示栈满。
当top=-1,即栈为空时,从空栈中再删除一个元素,栈将溢出,称为“下溢”。当top =MAXLEN-1,即栈满时,向栈中再插入一个元素,栈也将溢出,称为“上溢”。;1.初始化顺序栈;2.取栈顶元素;3.进栈操作;4.出栈操作;5.判空栈操作;3.1.3 栈的链式存储结构及其运算 ;1. 进栈;2. 出栈;3.1.4 栈的应用举例;;;2. 中缀表达式转换成等价的后缀表达式;例3.2 将中缀表达式2*(3+5)/(6-4)转换成等价的后缀表达式。;;3. 函数递归的实现;例3.4 设 n=4,计算4!。用一个栈来描述其递归的求解过程。; 假设有3个分别命名为A、B和C的塔座,在塔座A上插有n个直径大小各不相同、依小到大的编号为1,2,…,n的圆盘,如图3.6所示。现要求将A座上的n个圆盘移至C座上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则:
(1)每次只能移动一个圆盘;
(2)圆盘可以插在A、B和C中的任一塔座上;
(3)任何时刻都不能将一个较大的圆盘压在较小圆盘之上。
如何实现移动圆盘的操作呢?;3.2 队列;队列的基本操作可以归纳为以下几种:
(1)InitQueue(); 初始化一个空队列Q;
(2)GetFront(Q,y); 取队列Q的队头元素,y返回其值,但队列Q状态不变;
(3)EnQuene(Q,x); 若队列Q还有空间,将元素x插入到队尾;
(4)DelQueue(Q,y);若队列Q不为空,删除队列Q的队头元素,y返回其值;
(5)Empty(Q); 判断队列Q是否为空,若为空返回一个真值,否则返回一个假值。;3.2.2 队列的顺序存储结构及其运算;在队列为空的初始状态时,front=rear=-1。每当向队列中插入一个元素,尾指针rear向后移动一位,rear=rear+1。当rear= MAXLEN-1 时,表示队满;每当从队列中删除一个元素时,队首指针也向后移动一位,front=front+1。;(1) 入队;(2) 出队;可能会出现这样情况,尾指针指向一维数组最后,但前面有元素已经出队,这时要插入元素,仍然发生溢出,而实际上队列并未满。这种溢出称为“假溢出”。为了解决这个问题,下面讨论循环队列。;在循环队列中,容量设为MAXLEN,队首指针为 front,队尾指针为rear。当rear=front时,不能判定循环 队列是空队还是满队。对此作出规定,front=rear是循环队列空的标志。(rear+1)%MAXLEN=front是循环队列满的标志。
因此,在循环队列满时,队列中实际上还有一个空闲单元,以防止空队与满队的标志发生冲突。;(1) 入队;(2) 出队;3.2.3 队列的链式存储结构及其运算;(1)入队;(2) 出队;3.2.4 队列的应用;例3.7 键盘输入循环???冲区问题。; 栈是一种运算受到限制的特殊线性表,它仅允许在线性表同一端进行插入和删除操作,栈是一种后进先出的线性表,简称为LIFO表。
栈在日常生活和计算机程序设计中有着广泛的应用,如算术表达式求值、函数的嵌套和递归调用等。
队列也是一种运算受到限制的特殊线性表,它仅允许在线性表一端进行插入,在 另一端进行删除,队列是一种先进先出的特殊线性表,简称为FIFO表。
队列的链式存储结构与单链表类似,但删除结点只能在表头,插入元素只能在表尾。;谢谢观看!
您可能关注的文档
- 建筑施工技术 第二版 ppt第4章 钢筋混凝土工程.ppt
- 建筑施工技术 第二版 ppt第5章 脚手架工程.ppt
- 建筑施工技术 第二版 ppt第8章 结构安装工程.ppt
- 建筑施工技术 第二版 ppt第9章 钢结构工程.ppt
- 建筑施工技术 第二版 ppt第12章 建筑装饰.ppt
- 建筑施工技术 第二版 ppt第十章 防水工程.ppt
- 建筑施工技术 第二版 ppt绪论 钱大行.ppt
- 建筑识图与建筑构造学习情境1.ppt
- 建筑识图与建筑构造学习情境2.ppt
- 建筑识图与建筑构造学习情境3.ppt
- 数据结构 第四版 高职计算机应用技术专业 安训国 课件第四章 串.ppt
- 数据结构 第四版 高职计算机应用技术专业 安训国 课件第五章 树.ppt
- 数据结构 第四版 高职计算机应用技术专业 安训国 课件第一章 绪论.ppt
- 数据结构 第四版 高职计算机应用技术专业 安训国 课件数据结构首页.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第1章.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第2章.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第3章.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第4章.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第5章.ppt
- 数据库系统及应用 第五版 高职计算机大类专业基础 赖申江数据库 第6章.ppt
原创力文档


文档评论(0)