码迷,mamicode.com
首页 > 编程语言 > 详细

《Data Structure and Algorithm Analysis in Java》第 3 章 - 表

时间:2019-12-15 14:16:44      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:analysis   行操作   结构   new   nal   程序设计   前端   必须   link   

1、抽象数据类型

抽象数据类型(abstract data type,ADT)是带有一组操作的一些对象的集合。在 ADT 的定义中没有地方提到关于这组操作是如何实现的任何解释。

Java 类也考虑到 ADT 的实现,不过适当地隐藏了实现的细节。如果由于某种原因需要改变实现的细节,通过仅仅改变执行这些 ADT 操作的例程应该是很容易做到的。这种改变对于程序的其余部分是完全透明的。

对以每种 ADT 并不存在什么法则来告诉我们必须要有哪些操作,这是一个设计决策。错误处理和结构调整(在适当的地方)一般也取决于程序的设计者。

2、表 ADT

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

与这些“定义”相关的是要在表 ADT 上进行操作的集合。一个方法的功能怎样才算恰当,完全要由程序设计者来决定。

1)表的简单数组实现

对表的所有操作都可以通过使用数组来实现。下列程序段解释一个数组 arr 在必要是如何被扩展:

 

        int[] arr = new int[10];

        int[] newArr = new int[arr.length * 2];
        for(int i = 0; i < arr.length; i++)
        {
            newArr[i] = arr[i];
        }

        arr = newArr;

 

有时表是通过在高端进行插入操作建成的,其后只发生对数组的访问,在这种情况下,数组是表的一种恰当的实现。然而,如果发生对表的一些插入和删除操作,特别是对表的前端进行,那么数组就不是一种好的选择。

2)简单链表

为了避免插入和删除的线性开销,需要保证表可以不连续存储,否则表的每个部分都可能需要整体移动。

链表由一系列节点组成,这些节点不必在内存中相连,每一个节点均含有表元素和到包含该元素后继元的节点的链(link)。我们称之为 next 链。最后一个单元的 next 链引用 null。

《Data Structure and Algorithm Analysis in Java》第 3 章 - 表

标签:analysis   行操作   结构   new   nal   程序设计   前端   必须   link   

原文地址:https://www.cnblogs.com/Tom-1103/p/12043855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!