- 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
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
最近下载
- 2024年河北省高考英语试卷(含答案解析).docx
- 特色办学建设规划及实施方案.doc VIP
- 惠州市2024届高三第三次调研考试(三调)语文试卷(含答案).pdf
- 2021年农产品商贸流通专业群人才培养方案(高职).pdf
- 热血三国秒墙计算器.pdf VIP
- 教育调查与研究报告大学.docx VIP
- 《急诊与灾难医学》第十章 急性中毒.pptx
- 2024年高考真题和模拟题英语分类汇编:专题10 完形埴空(新高考15空) (原卷版) (全国通用).docx VIP
- 大唐国际胜利东二号露天煤矿采场边坡稳定性分析-采矿工程专业论文.docx
- 2024年新入职护士培训考试题库资料800题(含答案).pdf
文档评论(0)