- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第7章栈与Stack类2024/11/91
7.1栈的特点2024/11/92栈擅长在线性表的尾部,即栈顶操作,栈是受限的线性表。压栈时,最先进栈的节点在栈底,最后进栈的节点在栈顶(俗话说,垒墙的砖,后来者居上),弹栈时,从栈顶开始弹出节点,最后一个弹出的节点是栈底节点。栈是一种后进先出的数据结构,简称LIFO(LastInFirstout)
7.2栈的创建与独特方法2024/11/93StackE是VectorE的子类,因此StackE类的实例属于顺序表,即其中的节点的逻辑结构是线性结构,节点的存储结构是顺序存储。StackE泛型类的实例使用数组管理节点,因此节点就是对象,后面的叙述不再说节点里的对象。
2024/11/947.2栈的创建与独特方法●创建栈使用StackE泛型类声明栈时,必须要指定E的具体类型,类型是类或接口类型(不可以是基本类型,比如int、float、char等),即指定栈中节点的类型。例如,指定E是String类型:StackStringstack=newStack();或StackStringstack=newStackString();StackE泛型类的实例使用数组管理节点,因此节点就是对象,后面的叙述不再说节点里的对象。空栈默认的内部数组的长度是10(可以将内部数组理解为一块连续的内存空间)。
2024/11/957.2栈的创建与独特方法●独特的方法????例子1中的主类Example7_1使用了栈的独特方法。Example7_1.java例子1
7.3栈与回文串2024/11/96回文串是指和其反转(倒置)相同的字符串,例如:racecar,123321,level”,toot,civic,pop,eye,rotator,pip都是回文串。我们曾在第3章例子4,使用递归方法判断一个字符串是否是回文串。
2024/11/977.3栈与回文串Example7_2.java例子2如果一个字符串的长度是偶数,只要判断字符串的前一半和后一半是否相同即可,如果一个字符串的长度是奇数,只要忽略字符串中间的字符,然后判断字符串的前一半和后一半是否相同即可。那么利用栈的特点,首先将字符串的字符逐个进栈,然后弹出一半字符压入另一个栈,然后比较两个栈中的字符是否相同,就可以判断一个字符串是否是回文串。
7.4栈与递归2024/11/98递归过程就是方法地址被压栈、弹栈的一个过程,所以,也可以利用栈这种数据结构,把某些递归算法改写为迭代算法。
2024/11/997.4栈与递归Example7_3.java例子3例子3主类Example7_3中利用栈输出Fibonacci序列的前16项(有关Fibonacci序列的知识点和递归算法,参见第3章例子2)。
2024/11/9107.4栈与递归Example7_4.java例子4例子4主类Example7_4中利用栈描述汉诺塔搬运盘子,这里的迭代算法,尽管比第3章例子12简单,但却无法显示盘子的号码,所以不是严格意义的替代递归的迭代算法(有关汉诺塔的知识点和递归、迭代算法,参见第3章例子11和例子12)。
7.5栈与undo操作2024/11/911栈的“后进先出”的特点,适合用于设计undo操作,即撤销操作。撤销操作就是取消当前操作结果、恢复到上一次操作的结果。我们经常使用撤销操作,对此并不陌生,比如我们在编辑文本时,经常单击编辑器提供的“撤销”快捷按钮撤销刚刚键入文字,让文档恢复到上一次编辑操作的样子。可以用栈来实现undo操作,即把一系列操作结果压入栈中,当用户想回到上一步骤时,进行弹栈、弹出栈顶节点的对象,刚好是上一次的操作结果,恢复这个结果即可。可以不断地进行弹栈操作,直到栈为空,即恢复到最初的操作结果。
2024/11/9127.5栈与undo操作Example7_5.java例子5例子5的主类中的窗体有一个标签组件,用户单击“显示一个汉字”按钮可以在标签上显示一个汉字。但标签上只保留最后一次显示的汉字。当用户单击“撤销”按钮时,将取消用户最近一次单击“显示一个汉字”按钮产生的操作效果,即将标签上的汉字恢复为上一次单击“显示一个汉字”按钮所得到的汉字。
7.6栈与括号匹配2024/11/913栈的特点使得它很适合被用来检查一个字符串中的括号是否是匹配的,即左、右括号是否是成对的。算法如下:
2024/11/9147.6栈与括号匹配Match.java例子6例子6中的Match类的isMatch(Strings)方法判断一个s中的字符串中的括号是否是匹配的。例子6的主类Example7_6中,判断了几个字符串中的而括号是否匹配。Example7_6.java
7.6栈与深度搜索2024/11/9
您可能关注的文档
- 数据结构与算法(Java语言版)课件 第1、2章 数据结构简介、 算法复杂度.pptx
- 数据结构与算法(Java语言版)课件 第3、4章 递归算法、 数组与Arrays类.pptx
- 数据结构与算法(Java语言版)课件 第5、6章 链表与LinkedList类、 顺序表与ArrayList类.pptx
- 数据结构与算法(Java语言版)课件 第9、10章 二叉树与TreeSet类、 散列表与HashMap类.pptx
- 数据结构与算法(Java语言版)课件 第11--13章 集合HashSet类、 常用算法与Collections类、图论.pptx
- 数据结构与算法(Java语言版)课件 第13、14章 图论、 经典算法思想.pptx
- 数据结构与算法(Java语言版)课件全套 耿祥义 第1--14章 数据结构简介--经典算法思想.pptx
- 数据结构与算法(Java语言版) 教案1--14 (48+8)耿祥义 - 第一章 数据结构简介、算法复杂度----第六章 顺序表与ArrayList类6.7,6.8,6.9.docx
- 数据结构与算法(Java语言版) 教案15--28(48+8)耿祥义 第7--14章 栈与Stack类----经典算法思想.docx
- 数据结构与算法(java语言版)-教学大纲、教案1--4 耿祥义(48+8).doc
- 4.6.3 神经调节的基本方式 -2022-2023学年七年级生物下册课后培优分级练(人教版) 带解析.docx
- 5.1 延续文化血脉 同步练习-2023-2024学年部编版道德与法治九年级上册.docx
- 5.2地球仪和经纬网 同步练习—华东师大版科学七年级上册.docx
- 5.1 亚洲的自然环境(晚默版)2022-2023学年八年级地理下册必备知识梳理(中图版).docx
- 5.1 城市的环境问题及环境优化(课时练习)七年级地理下册同步课堂(沪教版·上海).docx
- 5.2北方地区和南方地区-2022-2023学年八年级地理下册课后培优分级练(湘教版) 带解析.docx
- 5.1 城市的环境问题及环境优化 练习 (含答案)七年级地理第二学期沪教版(上海).docx
- 5.23小学万能作文开头.docx
- 5.1地球的形状和大小同步练习——华东师大版科学七年级上册.docx
- 5 初三物理(上册)冲刺复习 计算专题 .docx
最近下载
- 项目的实施流程.pdf VIP
- 2024年6月8日浙江杭州市直遴选笔试真题及答案解析.doc VIP
- 新人教版初中数学九年级上册《第二十三章旋转:23.1图形的旋转》公开课教案_4.pdf
- invt英威腾chf100a变频器使用说明书.doc
- 《生物化学课程标准.doc VIP
- 2023年黑龙江大学法学专业《民法学》期末试卷A(有答案).docx VIP
- GB_T 20001.3-2015 标准编写规则 第3部分:分类标准(OCR).pdf VIP
- 开放式和针阀式热流道比较.ppt
- 义务教育版(2024)三年级全一册第6课《视频记录片段》课件.pptx VIP
- 重庆市XX住宅工程分户验收表格填写样例.docx
文档评论(0)