|
|
51CTO旗下网站
|
|
移动端

3.1 抽象数据类型

《数据结构与算法分析:Java语言描述(原书第3版)》第3章表、栈和队列,本章讨论最简单和最基本的三种数据结构。实际上, 每一个有意义的程序都将显式地至少使用一种这样的数据结构, 而栈则在程序中总是要被间接地用到, 不管我们在程序中是否做了声明。本节为大家介绍抽象数据类型。

作者:冯舜玺/陈越 译来源:机械工业出版社|2016-04-13 11:52

第3章 表、栈和队列

本章讨论最简单和最基本的三种数据结构。实际上, 每一个有意义的程序都将显式地至少使用一种这样的数据结构, 而栈则在程序中总是要被间接地用到, 不管我们在程序中是否做了声明。本章重点是:

介绍抽象数据类型的概念。

阐述如何有效地执行表的操作。

介绍栈ADT及其在实现递归方面的应用。

介绍队列ADT及其在操作系统和算法设计中的应用。

在这一章, 我们提供实现两个库类重要子集ArrayList和LinkedList的代码。

3.1 抽象数据类型

抽象数据类型(abstract data type, ADT)是带有一组操作的一些对象的集合。抽象数据类型是数学的抽象; 在ADT的定义中没有地方提到关于这组操作是如何实现的任何解释。诸如表、 集合、 图以及与它们各自的操作一起形成的这些对象都可以被看做是抽象数据类型, 这就像整数、 实数、 布尔数都是数据类型一样。整数、 实数和布尔数各自都有与之相关的操作, 而抽象数据类型也是如此。对于集合ADT, 可以有像添加(add)、 删除(remove)以及包含(contain)这样一些操作。当然, 也可以只要两种操作并(union)和查找(find), 这两种操作又在这个集合上定义了一种不同的ADT。

Java类也考虑到ADT的实现, 不过适当地隐藏了实现的细节。这样, 程序中需要对ADT实施操作的任何其他部分可以通过调用适当的方法来进行。如果由于某种原因需要改变实现的细节, 那么通过仅仅改变执行这些ADT操作的例程应该是很容易做到的。这种改变对于程序的其余部分是完全透明的。

对于每种ADT并不存在什么法则来告诉我们必须要有哪些操作, 这是一个设计决策。错误处理和结构调整(在适当的地方)一般也取决于程序的设计者。57本章中将要讨论的这三种数据结构是ADT的最基本的例子。我们将会看到它们中的每一种是如何以多种方法实现的, 不过, 当它们被正确地实现以后, 使用它们的程序却没有必要知道它们是如何实现的。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

鸟哥的Linux私房菜——服务器架设篇(第二版)

本书是对连续三年蝉联畅销书排行榜前10名的《Linux鸟哥私房菜——服务器架设篇》的升级版,新版本根据目前服务器与网络环境做了大幅度修订...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊