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

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。

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

时间: 2024-11-10 15:08:48

《Data Structure and Algorithm Analysis in Java》第 3 章 - 表的相关文章

《Data Structure and Algorithm Analysis in Java》中Java语言的重要特点 - 实现泛型构件 pre-Java 5

面向对象的一个重要目标就是对代码重用的支持.支持这个目标的一个重要机制就是泛型机制(generic mechanism):如果出去对象的基本类型外,实现方法是相同的,就可以用泛型实现(generic implementation)来描述这种基本功能.在Java 1.5版本以前,Java并不直接支持泛型实现,泛型编程的实现是通过使用继承的一些基本概念来完成的. 1. 使用Object表示泛型 Java中的基本思想就是通过使用像Object这样适当的超类来实现泛型. public class DSA

资源向导之 &quot;Data structure and Algorithm&quot;

几本神书: 一.最佳入门--DSAA 这门书相关的代码. http://users.cis.fiu.edu/~weiss/dsaa_c2e/files.html 我自己也写了一些. 二.大名鼎鼎的CLRS. MIT Introduction to algorithm http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/in

[Data Structure] An Algorithm for Matching Delimiters

An important task when processing arithmetic expressions is to mach delimiters. We can use Stack to solve this problem. def is_matched(expr): left='({[' right=')}]' S=ArrayStack() for c in expr: if c in left: S.push(c) elif c in right: if S.is_empty(

Use the Right Algorithm and Data Structure

Use the Right Algorithm and Data Structure Jan Christiaan "JC" van Winkel A big bank with many branch offices complained that the new computers it had bought for the tellers were too slow. This was in the time before everyone used electronic ban

Java for LeetCode 211 Add and Search Word - Data structure design

Design a data structure that supports the following two operations: void addWord(word)bool search(word) search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one letter.

What is “passive data structure” in Android/Java?

From the Android developer web link: http://developer.android.com/reference/android/content/Intent.html, you can find that it says "It (Intent) is basically a passive data structure holding an abstract description of an action to be performed."

[LeetCode] 211. Add and Search Word - Data structure design Java

题目: Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one le

hdu-5929 Basic Data Structure(双端队列+模拟)

题目链接: Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 207    Accepted Submission(s): 41 Problem Description Mr. Frog learned a basic data structure recently, which is called

代写java binary search trees|代写Java Data Structures CS作业|代写Java作业|Java 编程作业代写|Java作业代写

CS2230 Computer Science II: Data Structures Homework 7 Implementing Sets with binary search trees 30 points Goals for this assignment ? Learn about the implementation of Sets using binary search trees, both unbalanced and balanced ? Implement methods