本章重点
不同的结构类型
栈
队列
优先级队列
解析算术表达式
本章涉及到三种数据存储类型:栈、队列和优先级队列。
首先讨论这几种结构和数组的区别;然后依次介绍每种结构。
最后一节将观察栈在解析算术表达式问题中的重要应用。
不同的结构类型
本章所讲的数据结构和算法和前面章节提到的有很大不同。
在开始详细讲解新的结构之前,先来看看其中的三个区别。
程序员的工具
数组是前面已经介绍过的数据存储结构,和本书后面将遇到的其他结构(链表、树等等)一样,
都适用于数据库应用中作数据记录。
它常用于记录那些对应于现实世界的对象和活动的数据,
如职员档案、目录和商务数据等等。这些结构便于数据的访问:他们易于进行插入、删除和查找特定数据项的操作。
然而,
本章要讲解的数据结构和算法更多的是作为程序员的工具来运用。
他们主要作为构思算法的辅助工具,而不是完全的数据存储工具。
这些数据结构的生命周期比那些数据类型的结构要短得多。
在程序操作执行期间,他们才被创建,通常用他们去执行某项特殊的任务;当任务完成之后,他们就被销毁。
受限访问
在数组中,若知道数据项的下标,便可以(立即)访问该数据项;或者通过顺序搜索数据项,访问到数组中的各个数据项。而在本章的数据结构中,访问,是受限制的,即,在特定时刻,只有一个数据项,可以被读取,或者被删除(除非作弊)
这些结构接口的设计增强了这种受限访问。访问其他数据项(理论上)是不允许的。
更加抽象
栈、队列和优先级队列是比数组和其他数据存储结构更为抽象的结构。主要通过接口对栈、队列和优先级队列进行定义,这些接口表明通过它们可以完成的操作,而它们的主要实现机制对用户来说是不可见的。
例如,栈的主要机制可以用数组来实现,本章的示例就是这样处理的;。。。。。
。。。。
栈实例2:分隔符匹配({})c数据结构也有类似实例
栈通常用于解析某种类型的文本串。通常,文本串是用计算机语言写的代码行,而解析他们的程序就是编译器。
为了解释清楚,下面看一个检查用户输入的一行文本中分隔符的程序。
文本不一定是实际的java代码(也可以是),但它需要使用和java一样的分隔符。分隔符包括大括号{}中括号【】和小括号(),每个左分隔符需要和右分隔符匹配,
原文:https://www.cnblogs.com/yangzihong/p/13534277.html