目录
数据的结构有为逻辑结构和物理结构(存储结构)。
逻辑结构
逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立千计算机的。因此, 数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
根据数据元素之间关系的不同特性, 通常有四类基本结构:
(1)集合结构:
数据元素之间除了 “属于同一集合” 的关系外,别无其他关系。
(2)线性结构:
数据元素之间存在一对一的关系。
(3)树结构:
数据元素之间存在一对多的关系。
(4)图结构或网状结构:
数据元素之间存在多对多的关系。
线性结构
包括线性表、栈和队列、字符串、数组、 广义表。
每个结点(除头结点外)有且仅有一个直接前驱,并且每个结点(除尾结点外)有且仅有一个直接后继。
非线性结构
其中集合结构、树结构和图结构都属于非线性结构,非线性结构包括树和二叉树、有向图和无向图。
树形结构:
一个结点可以有多个直接后继(除叶子结点外),但只有一个直接前驱(除根结点外)。
图形结构:
一个结点可以有多个直接后继,也可以有多个直接前驱。
逻辑结构的特征:
1.从逻辑关系上描述数据,与数据的存储无关;
2.从具体问题抽象出来的数据模型;
3.与数据元素本身的形式、内容无关;
4.与数据元素的相对位置无关;
存储结构
数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。把数据对象存储到计算机时,既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机内用一个结点来表示。
数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。
顺序存储结构:
顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
顺序存储结构是一种逻辑上和物理地址都连续的存储结构。
链式存储结构:
顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用千存放后继 元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。
索引存储
索引存储是在原有存储数据结构的基础上,附加建立一个索引表,索引表中的每一项都由关键字(能唯一标识一个结点的数据项)和地址组成。
散列存储
散列存储是通过构造散列函数来确定数据存储地址或查找地址的。其特点是存取速度快,但只能按关键字随机存取,不能顺序存取,也不能折半存取。