基本概念
1.1 数据
信息的载体,是描述客观事物属性的数,字符以及所有能输入到计算机中并被计算机程序所识别和处理的符合的集合。
例如:身份信息,视频,音频等。
1.2 数据对象、数据元素、数据项
数据对象, 具有相同性质的数据元素的集合,是数据的一个子集。
数据元素, 数据的基本单元,通常作为一个整体去考虑和处理。
数据项, 构成数据元素的,不可分割的的最小单位。
例如: 在人类数据中,所有身份信息便是一个数据对象,一个身份信息就是一个数据元素,身份信息上的名字,性别等就是数据项。
1.3 数据类型(集合+操作)
原子类型, 语言中的int、char、float;集合+操作
结构类型, list,map,set; 集合+操作
抽象数据类型ADT, 人类,汽车,狗; 所有可以抽象出来的模型;
对下表进行分析:指出数据、数据对象、数据元素、数据项以及结构。
从小到大推最合理。
数据项: 比如,小明这个名字,100这个成绩。
数据元素:比如小明这一行这个整体,就是一个数据元素,以此类推。
数据对象: 那么它们四人的集合便是一个数据对象。
数据: 整张表格。
结构:比如小红排在小明之后,小明排在小红之前,这种相互关系的某种联系,就是结构。
所以:数据结构的整体概念就有了,数据结构是相互之间存在一种或多种特定关系的数据元素的结合。
1.4 数据结构三要素
逻辑结构,存储结构,运算。
- 逻辑结构, 分为线性结构、(集合、树形结构、图状结构) 可统称为非线性结构。
-
线性结构
A在B之前,B在A之后,BC又有相同关系。 这种像一条线一样连在一起的,就叫线性结构。 例如排队,有序数组等。
-
集合结构
就像这样散乱分布在一个集合之中,但彼此之间再没有其它联系。
这种分布式,就叫集合结构。
例如,整数集,小数集。数与数之间没有关系,但是它们统称为某个集合。 -
树形结构
如上图,这种一对多的关系,A对多个节点,但BCDE又没有任何关系,这就称作树形结构。
例如, 狗,对应这各种种类。 -
图状结构
如上图,这种多对多的关系。B可以指向多个节点,多个节点也可以指向B。
例如,城市之间的关系。2.存储结构, 分为顺序存储,链式存储,索引存储,散列存储。
-
顺序存储
abcd 在逻辑上相邻。那么我们把它存放在单存储元中也让它相邻。
它们的关系是通过物理地址相邻而体现的。 -
链式存储
链,就代表着链接的意思。
a的存储单元不仅存放了a这个数据元素,而且还存放了一个地址(这里也可以叫做指针)。
我们通过这个地址,来体现它们之间的关系,这就到达了一个指针的效果。
注意,在链式存储中,abc的物理存储地址是无序的,它们可能相邻很远,也可能相邻很近。-
索引存储
特点在于, 它不仅要在内存中存储数据元素,还要在内存中建立一张索引表(消耗内存资源)。
索引表里存的则是一个关键字和某数据元素的存储地址。(n,addr8)
例如,addr8对应数据元素7, 那么只需要通过关键字n 就可以找到7! -
散列存储(也称为hash存储)
特点在于, 它是通过对关键字的相应函数运算直接求得对应数据元素地址。
例如,f(n) =addr8, 得到元素7的地址,就可以找到7 了。
注意与索引存储的区别!!
它比索引存储好啊!
运算
此处省略一万字。。。。。 -