数据结构的概念
数据结构很重要,数据结构很重要,数据结构很重要,重要的事情说三遍
数据结构的定义
在计算机世界中,数据是对客观事物的描述形式和编码形式的统称,是计算机和程序的处理对象(输入数据)和计算结果(输出数据)
数据的种类:数值型数据(整数,实数);文字型数据(字符串,程序代码等);矩阵,记录;声音,图像;总是以某种编码形式出现
数据元素:(data element)
也称数据结点,简称结点(node);
描述一个独立书屋的名称,数量,特征,性质的一组相关信息组成一个数据结点
通常情况下,一个结点含有多个数据项(data item)
- 节点的类型为结构型,每个数据项是结点的域,能够唯一表示节点的域称为关键字域(key)
- 但值类型的结点:只含有一个数据项
数据结构(data structure,DS)
-
B = (D,R)
D:有穷的结点集合
R:D中结点间的有穷关系集合(表示结点之间的逻辑关系的集合)
(D,R)是对客观事物的抽象描述,是数据的逻辑结构(logical form)
-
B=(D,R,O)
B数据结构
D有穷的结点的集合
R D中结点的有穷关系集合
O 表示“运算集”
如何在计算机中表示数据及其之间的关系呢?:需要研究数据结构的存储方式,主要从两个方面,逻辑结构,物理结构
物理结构(physical form)
就是数据结点在计算机内的存储形式,既要存储数据结点的值,又要存储或结点的存储地址能够体现出结点之间的关系
通俗的来说就是,计算机存储了结点值,以及和他相关的结点的地址,来突出两个或多个结点之间的关系,具体是什么关系,看存储方式
存储方式可以分为
- 顺序存储
- 非顺序存储
存储结点
- 用于存储一个数据节点的存储单元
- 一个数据结点对应一个存储结点
- 所以,在不混淆的情况下,数据节点和存储结点统称为结点
空白结点(空结点,自由结点)
预留的存储结点(即尚未存储数据的存储结点)
数据结构的种类和运算
数据结构的种类
- 表结构(描述结点之间简单的先后次序关系,每个结点只有一个前驱节点,和一个后继节点,但是尾结点没有后继,首结点没有前驱,就是一个简单的线性结构,例如:A->B->C 其中A,B,C是三个结点,前驱结点就是此结点前面的结点,后继结点就是此结点后面的结点,A是B的前驱结点,C是B的后继结点,A结点是首结点没有前驱结点,C结点是尾结点没有后继结点)
- 树结构(描述结点之间的层次关系,嵌套关系,一个结点只有一个前驱,可以有多个后继,但是根结点没有前驱,例如:在计算机中,A,B,C,D都是四个文件夹,其中B,C,D都放在A文件夹中,这里A就相当于根结点没有前驱,但是B,D又放在C中,A是C的前驱结点有且只有一个,D,B又是C的后继结点,有两个,但是D,B各自都只有一个前驱,那就是C,这种结构就是树结构)
- 图结构(描述结点之间最一般的关系(多对多),图结构的两个结点之间都有可能有或没有关系,例如:城市的交通网A,B,C,D,E,R都是城市(结点),A城市可以去B,C城市,B城市还可以去C,D,E城市,而C城市还可以去D,E城市,而,D,E两个城市除了有B,C的线路外,不存在其他线路,无法到达其他城市,R城市是封闭城市,不与外界沟通,不存在交通网,前后两个点之间的前驱结点数量,和后继节点数量不确定)
- 散结构(结点之间松散的“无关关系’’,相当于上面例子中的R城市)
但是,聪明的人不难看出,图结构在满足一些特定的条件可以变成树结构和散结构,这是因为树结构和散结构都是图结构的一种特例.
运算(operation)
对数据和数据结构的处理操作,不同的数据结构有不同的运算:如表结构的常见运算:查找,插入,删除,排序等
- 查找(Search)在数据结构中寻找满足某个特定要求的数据元素(位置或值)
- 插入(Insert)在数据结构上增添新的数据元素(指定位置,指定特征)
- 删除(Delete)删除数据结构中某个指定的数据元素