数据结构是计算机科学中最基础的概念,也是计算机科学的基本构成要素。
良好的数据结构知识对于设计开发高效的软件系统是必备条件。
我们一直在处理数据,我们如何存储数据,组织和分组数据很重要。
组织数据的例子:
- 我们能快速有效地在字典中检索单词,是因为字典中的单词是排序的。
- 城市地图的地标的位置和道路网络连接,数据是以几何形式来组织的。
- 一家公司的每日现金和现金结单,我们将它组织和存储为表格。
为了组织不同种类的数据,我们需要不同类型的结构。
计算机可以处理各种数据,如文字,图像,视频,关系数据,地理空间数据……
我们如何存储组织和分组计算机中的数据很重要,虽然现在的计算机很强大,但是我们没有使用正确的结构,正确的逻辑结构,那我们的软件将不会高效。
数据结构的定义:数据结构是一种方法,是计算机存储和组织数据的方式。使数据可以得到有效利用。
当我们研究数据结构作为存储和组织数据的方式时,我们以两种方式研究它们。
一)数学和逻辑模型,将它们作为数学和逻辑模型的时候,我们只看它们的抽象视图。我们只是从较高的角度来看特定的数据结构的所有功能和操作,特定的数据结构的所有功能和操作。
例(抽象视图):电视这个电子设备的抽象视图,就是可以打开和关闭,可以接收卫星电视信号,可以播放音频和视频。简单的来说抽象视图就是这个设备能实现的功能,我们不关心它的电路实现原理。
我们将数据结构作为数学或逻辑模型进行研究时,我们只是定义他们的抽象视图。为此我们有一个术语,我们将其定义为:抽象数据类型。
例(抽象数据类型):
定义一个叫做列表的东西
1.能够存储一组特定数据类型的元素
2.根据他们在列表中的位置,来读取里面存储的元素
3.能够修改列表中特定位置的元素
所以我们只是定义一个模型,可以用编程语言以多种方式去实现它,我们称之为抽象数据类型的定义。抽象数据类型(ADT)(Abstract Data Type)。
所有的高级语言都已经有了这种ADT的具体实现。比如数组这样的形式,数组给我们提供上面提到的这些功能,因此数组是具体的数据类型的实现。
二)谈论数据结构的第二种方法是谈论实现,因此实现将是一些具体类型,而不是抽象数据类型。
我们可以用相同的语言以多种方式实现相同的ADT,我们可以使用一种名为链表的数据结构实现列表ADT。
抽象数据类型下一个定义:抽象数据类型作为数据和操作的定义,它没有任何实现的细节。
数据结构作为抽象数据类型,我们还将研究如何实现它们,
数据结构有:1.数组 2.链表 3.栈 4.队列 5.树 6.图……
当我们研究这些数据结构时,
- 我们将研究它们的逻辑视图
- 研究这些数据结构可为我们提供哪些操作
- 研究这些操作的成本,主要是在时间方面
- 用编程语言来做具体的实现