1.数据结构绪论
1.1 基本概念及术语
1.1.1 数据
是指描述客观事物的符号,是计算机可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据除了整型、实型等数据类型之外,还包括字符、声音、图像、视频等其他非数值类型。
1.1.2 数据元素
即组成数据,有一定意义的基本单位。在计算机中通常作为整体处理。比如人类的数据元素就是人。禽类的数据元素是牛,羊,鸡这些。
1.1.3 数据项
数据不可分割的最小单位,一个数据元素可由若干个数据项组成。例如人是数据元素,其数据项可以包括性别,年龄等等。虽然其是最小单位,但数据元素才是数据结构中建立数据模型的基本点。
1.1.4 数据对象
性质相同的数据元素的集合,是数据的子集。
1.1.5 数据结构
简单来说,结构就是不同数据元素之间存在的特定关系,而数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。计算机中,数据元素并不是孤立,杂乱无序的,而是一种具有内在联系的数据集合。一个好的程序,必须分析待处理对象的特性以及各处理对象之间存在的关系。
1.2 逻辑结构与物理结构(存储结构)
按照角度的不同,数据结构可以分为逻辑结构与物理结构
1.2.1 逻辑结构
逻辑结构是指数据对象中数据元素之间的相互关系,可分为以下四种:
-
集合结构
集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。各个数据元素是“平等”的,共同属性就是同属于一个集合。与数学中的集合概念类似。 -
线性结构
线性结构中的数据元素之间是一对一的关系。 -
树形结构
树形结构中的数据元素是一对多的层次关系,如同一棵树一样。 -
图形结构
图形结构的数据元素是多对多的关系
1.2.2 物理结构
是指数据的逻辑结构在计算机中的存储形式。实质就是**如何把数据元素存储到计算机的存储器中,**存储器主要是针对内存而言,外部存储器的数据组织通常用文件结构来描述。
数据的存储结构应正确反映数据元素之间的逻辑关系,数据元素的存储结构形式有两种:顺序存储和链式存储。
- 顺序存储
顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
这种存储结构跟排队一样(没有插队这种情况),数组就是这样的存储结构。当你建立一个有9个整型数据的数组时,计算机就在内存中安排了一块内存,按照一个整型所占位置带下乘以9,开辟一段连续的空间。
- 链式存储结构
实际上,就像排队一样,并不是一定这么简单、有规律。实际上总会有人插队,或者因为各种各样的事情离开队伍。也就是这个队中可能会有新成员,也有可能老成员会离开。像这样的情况,顺序存储就是不科学的,不满足实际情况的。由此就有了链式存储结构。
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,,也可以是不连续的。这个结构的存储关系并不能反映其逻辑关系,因此需要用一个指针来存放数据元素的地址,通过地址来找到相关联数据元素的位置。相对于顺序存储,链式存储会灵活许多。
1.3 抽象数据类型
1.3.1 数据类型
数据类型是指一组性质相同的值的集合以及定义在此集合上的一些操作的总称。
数据类型是按照值的不同进行划分的。在高级语言中,每个变量、常量和表达式都有各自的取值范围。类型就是用来说明变量或表达式的取值范围和所能进行的操作。
数据类型的出现时因为计算机的内存并不是无限大的,像一些简单的计算比如1+1=2,显然并不需要开辟很大的内存空间,所以用数据类型来区分不同的需求。
C语言中,按照取