今天学习到408数据结构时遇到一个奇奇怪怪的东西:抽象数据类型,这个概念的定义如此之长,也不是特别容易理解。然后我去Google查阅了大量资料后算是把这个概念弄清楚了。接下来简单谈下我的对抽象数据类型的理解。

抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。

太抽象以至于不太好理解,其实可以用一个等式来描述抽象数据类型。

抽象数据类型 = 逻辑结构 + 数据运算

1. 逻辑结构

说到逻辑结构不得不从头讲起:

我们生活在现实世界中,如何描述这世界万物呢?画家可以用手中的画笔,而我们如何来描述这个世界呢?我们可以用数据来描述这个世界。

接下来是层层递进的概念:

数据是信息的载体,用来描述客观事物属性的数、字符及所有能被计算机读取(二进制0、1)识别的符号的集合。

数据元素是数据的基本单位,一个数据元素可以包括多个数据项,数据项是数据元素的最小构成单位。

具有相同性质的数据元素称为数据对象

数据元素间存在一种或多种关系的则可以称之为数据结构

而数据的逻辑结构是数据结构的三要素之一。

常见的逻辑结构分为线性和非线性,这里就不一一展开了。

2. 数据运算

施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

比如对数据的增删改查

3.抽象数据类型

逻辑结构不涉及数据在计算机中具体的实现和存储,这些操作是由存储结构决定的,这就是说,抽象数据类型只需考虑问题本身即可。

抽象数据类型是在不涉及具体的,和计算机系统相关的细节情况下,优先理解问题本身,在此基础上,实现用计算机求解问题的过程。这就是使用抽象数据类型的目的。

抽象数据类型就是在这种形式化的描述下把数据的组成和如何操作的问题描述清楚,且没有涉及到具体的计算机具体实现的一些问题。从数据对象中看出,抽象数据类型是由基本数据类型组成

就是告诉你这个东西是什么,有什么特征,但不关心具体是如何实现这个东西的。

4.抽象数据类型和数据结构的区别

ADT is to a Data Structure, what an Interface (what it does) is to a Class (how it does it)

ADT 之于数据结构,接口(它做什么)之于类(它如何做)

ADT: List
DS:  ArrayList, LinkedList...

ADT: Map
DS:  HashMap, TreeMap...

永远相信美好的事情即将发生!

Yancey

1635508815000

文章作者: Yancey
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yancey !
评论
  目录