2.1.2数据结构基本概念
数据:数据是信息的载体,其能够被计算机识别、存储和加工处理,是计算机加工的原材料。
数据元素:数据元素时数据的基本单位,其也称为元素、节点、顶点、记录等;一个数据元素有多个数据项构成,数据项时具有独立含义的最小标识单位:
字段、域、属性等。
数据结构:数据结构指的是数据之间的相互关系,也是数据的组织形式
2.1.3数据结构
数据结构主要包括3个方面的内容:数据逻辑结构、数据的存储结构和数据的运算
数据的逻辑结构:数据元素之间的逻辑关系,数据的逻辑结构是从逻辑关系上描述数据 的,与数据在计算机如何存储无关的。
数据的存储结构:数据元素的逻辑关系在计算机存储器的表示形式。数据的存储结构依赖于计算机语言,只有高级语言才会讨论存储结构
数据的运算:也就是能对数据施加的操作。数据运算其基础在于数据的逻辑结构上,每一种逻辑结构都能归纳为一个运算的集合。最常用的原酸包括:检索、插入、删除、更新、排序等
(1)数据结构示例:
表2-1中每一个行可以看作是一个数据元素,也可以称为记录或者节点,这个数据元素由:学号、姓名、数学、物理、英语、语文等数据项组成。
表中任意一个节点直接前趋几点最多只有一个。对表中任意一个节点直接后继节点最对只有一个。表中的各种节点关系就构成了逻辑结构
表中的每个节点是按照顺序依次序存储在一连篇的存储单元中呢,还是存储在分散的空间等等,这些就是存储结构相关
对表中的数据节点进行查找、增加、删除等就是对数据进行运算。
数据结构是一个有机的整体,不能孤立的去看某一个方面:
同一个逻辑结构可以有不同的存储结构:例如,线性表是一种最简单的逻辑结构、如果线性表采用顺序存储方式,这种数据结构就是顺序表;如果将线性表插入限制在牟一端,删除操作又限制在某一段,那么这种树级结构就是队列。如果将线性表的差如何操作都限制在某一端,那么这种表就是栈。
2.1.4数据结构的分类
1.线性结构
线性结构就是表中的各个节点具有线性关系。如果从数据结构的语言来描述的话线性结构应包括以下几点
线性结构是非空集合
线性结构有且仅有一个开始几点和一个终端节点
线性结构所有节点最多只有一个直接前趋和一个直接后继节点
2.非线性结构
非线性结构就是表中的各个节点之间具有多个对应关系。如果胸数据结构的语言来描述的话,非线性结构应该包括如下几点:
非线性结构是非空集
非线性结构的一个节点可能有多个直接前趋节点和直接后继节点。
实际应用中:数组、广义表、树结构和图结构都是非线性结构。
2.1.5数据结构的几种存储方式
在计算机中,数据的存储结构可以采用以下四种方法来实现:
1.顺序存储
顺序存储就是在一块连续的存储区域一个接着一个的存放数据,顺序存储方式把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点之间的逻辑关系由
存储单元邻接关系来体现。一般数组或者结构数组会采用这种方式。
2.链式存储方式
他不要求逻辑上相邻接点在物理位置上相邻,节点间的逻辑关系由附加的引用字段表示,一个节点的引用字段往往指向下一个节点存放位置。
3.索引存储方式
索引存储方发是采用附加的索引表的方式来存储借点信息。索引表有若干索引项组成,索引存储方式中索引项的一般形式为(关键字、地址)。其中,关键字是能够唯一标识一个节点的数据项
索引存储方式还可以细分为两类:
稠密索引:这种方式中每个节点在索引表中都有一个索引项,索引项的地址指示结点的存储位置
稀疏索引:结点在索引表中只对应一个索引项。索引项的地址指示一组结点的起始存储位置
4.散列存储方式
散列存储方式是根据结点的关键字直接计算出该节点的存储地址的一种存储方式
2.1.6数据类型
抽象数据类型:
抽象数据类型是指数据的组织及相关操作,ADT可以看做是数据的逻辑结构及其在逻辑结构上定义的操作,一个抽象数据类型ADT可以被定义成如下形式:
ADT 抽象数据类型名
{
数据对象:(数据元素集合)
数据关系:(数据关系二元组结合)
基本操作:(操作函数的罗列)
}ADT抽象数据类型名;
抽象数据ADT一般具有如下两个特征:
数据抽象:使用抽象数据类型ADT时,其强调的是实体的本质特征,所能够完成的功能以及与外部用户的接口。
数据封装:用于将实体的外部特征和其内部实现细节进行分离,并且对外部用户隐藏其内部实现细节。
抽象数据类型ADT可以看做是描述问题的模型,它独立于具体实现,ADT的优点是将数据和操作封装在一起,
使得用户程序只能通过在ADT里定义某些操作来访问其中的数据,从而实现了信息隐藏。在java语言中是使
用接口来表示抽象数据类型
2.1.7常用的数据结构
1.数组
是将具有相同类型的若干便量有序的组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中
都有对应。
2.栈
3.队列
4.链表
元素数据按照链式存储结构进行的数据结构,这种存储结构在物理上非连续的特点。链表中元素节点都包含了数据域和引用域两部分,其中引用域保存了数据结构下一个元素存放的地址
5.树
树是典型的非线性结构,其是包括N个节点的又穷集合K,在树结构中,有且仅有一个根节点,该节点没有前趋节点。在树结构中其他节点都有且仅有一个前趋节点,而且可以有m个后继结点;m>=0。
6.图
图是一种非线性数据结构,在图结构中,数据节点一般称为顶点,而边是顶点的有序偶对,如果两个顶点存在一条边,那么就表示这两个顶点有相邻关系
7.堆
堆是一种特殊的树形结构,一般讨论的堆都是二叉堆。堆得特点是其根节点的值是所有节点中最小或者最大的,并且根节点的两个子树也是一个堆结构
8.散列表