|
|
|
|
移动端

3.2 表ADT

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

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

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


3.2 表ADT

我们将处理形如A0,A1,A2,…,AN-1的一般的表。我们说这个表的大小是N。我们将大小为0的特殊的表称为空表(empty list)。

对于除空表外的任何表, 我们说Ai后继Ai-1(或继Ai-1之后, i <N)并称Ai-1前驱Ai(i>0)。表中的第一个元素是A0, 而最后一个元素是AN-1。我们将不定义A0的前驱元, 也不定义AN-1的后继元。元素Ai在表中的位置为i+1。为了简单起见, 我们假设表中的元素是整数, 但一般说来任意的复元素也是允许的(而且容易由Java泛型类处理)。

与这些“定义”相关的是要在表ADT上进行操作的集合。printList和makeEmpty是常用的操作, 其功能显而易见; find返回某一项首次出现的位置; insert和remove一般是从表的某个位置插入和删除某个元素; 而findKth则返回(作为参数而被指定的)某个位置上的元素。如果34,12,52,16,12是一个表, 则find(52)会返回2;insert(x,2)可把表变成34,12,x,52,16,12(如果我们插入到给定位置上的话); 而remove(52)则又将该表变为34,12,x,16,12。

当然, 一个方法的功能怎样才算恰当, 完全要由程序设计者来确定, 就像对特殊情况的处理那样(例如, 上述find(1)返回什么?)。我们还可以添加一些操作, 比如next和previous, 它们会取一个位置作为参数并分别返回其后继元和前驱元的位置。

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

51CTO读书频道二维码


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

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

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

读 书 +更多

ASP.NET 2.0数据库开发实例精粹

本书分为8章,首先介绍ASP.NET的开发技巧和重点技术,尤其针对初学者如何快速入门并掌握ASP.NET编程做了深入浅出的介绍;然后重点介绍ASP.N...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊