基本概念和术语
数据:是描述客观事物的符号,是计算机中科可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整理处理。也被称为记录。
数据项:一个数据元素可以由若干个数据项组成。
数据对象:是性质相同的数据元素的集合,是数据的子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构与物理结构
逻辑结构:是指数据对象中数据元素之间的相互关系。逻辑结构分为以下四种
1:集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。数学结构中的集合关系就类似于数学中的集合,如下图
2:线性结构:线性结构中的数据元素之间是一对一的关系。如下图
3:树形结构:树形结构中的数据元素之间存在一种一对多的层次关系,如下图
4:图形结构:图形结构的数据元素是多对多的关系。如下图
物理结构:是指数据的逻辑结构在计算机中的存储形式。数据元素的存储结构有两种:顺序存储和链式存储。
1:顺序存储结构:是把数据元素存放在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的。如下图
这样的存储结构说白了就是排队占位,大家都按排序排好,每个人占一小段空间,大家谁也别插谁的对。我们之前学计算机语言时,数组就是这样的顺序存储结构。
如果就是这么简单有规律,一切就好办了。可实际上,总会有人插队,也会有人上厕所放弃排队。所以这个队伍中会增加新成员,也有可能去掉老成员,整个结构时刻处于变化。显然,面对时常要变化的结构,顺序结构是不科学的,接着引出链式存储。
2:链式存储结构:是把数据元素放在任意的存储单元里,这里的存储单元可以是连续的,也可以是不连续的,数据元素的存储关系并不能反映逻辑关系,因此需要一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。如下图
举例:现在的银行,医院,设置了排队系统,每个人去了,先领个号等被叫号,叫到时去办理业务或去看病。等待的时候你爱在哪在哪。你关注的是前一个号有没有被叫到,叫到了,下一个就轮到了。
显然,链式存储结构就灵活多了,数据存在哪里不重要,只要有一个指针存放了相应的地址就能找到它了。
抽象数据类型
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。在c语言中,按照取值的不同,数据类型可以分为两类
1:原子类型:是不可以再分解的基本类型:包括整型、实型、字符型等。
2:结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干整型数据组成的。
抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。事实上,抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。
参考<大话数据结构>一书。