重温数据结构之介绍篇0x002

167 阅读2分钟

我们有两种途径研究数据结构作为存储和组织数据的方式。

  • 一种是数学/逻辑模型。当我们将数据结构作为数学/逻辑模型时,我们只看它们的抽象视图,我们只是从较高的高度看所有的特征和所有定义特定数据结构的操作。现实世界中的抽象视图,比如说电视设备的抽象视图可以说是可以打开和关闭的电气设备,它可以接收卫星节目的信号,可以播放音视频节目,只要我有这种设备,我不关心如何嵌入电路来生产这种设备,也不关心是哪家公司制造的。这种就是抽象视图,也称之为抽象数据类型。举个例子,我想定义一个叫做列表的东西,可以存储一组特定数据类型的元素,支持通过元素的位置读取元素,也支持修改列表中特定位置的元素,存储任何数据结构的给定数量的元素。我们现在就是在定义一种模型。下一步,就可以用一种编程语言以多种方式来实现这个模型。这就是抽象数据类型的定义,抽象数据类型也称 ADT。所有高级语言都已经用数组的形式对这种 ADT 有具体的实现,因此数组能够提供所有这些功能,所以数组是具体的数据类型的实现。

  • 另一种是模型实现。实现是讨论的具体数据类型,而不是抽象数据类型,我们可以以相同的语言,不同的方式实现相同的 ADT。比如用 C 或 C++ 可以实现链表(LinkedList)。

抽象数据类型(ADTs)是作为数据和操作定义的实体,但没有实现,它们没有任何实现细节。

数据结构包括数组、链表、栈、队列、树、图和列表等等。当我们研究数据结构时,我们将研究它们的逻辑视图,我们将研究这些数据结构可以为我们提供哪些操作,我们将研究这些操作的成本(主要是时间方面),还有用编程语言怎样实现。