数据结构指数据元素的集合及元素间的相互关系和构造方法。元素之间的相互关系是数据的逻辑结构,数据元素及元素间关系的存储称为存储结构(物理结构)。数据结构按照逻辑关系的不同分为线性结构和非 线性结构两大类,其中,非线性结构又可分为树结构和图结构。
(一)线性结构
线性结构的特点是数据元素之间呈现一种线性关系。
1、线性表
常采用顺序存储和链式存储,主要的基本操作是插入、删除和查找等。
定义:一个线性表是n(n >= 0)个元素的有限序列,通常表示为(a1、a2、……、an)。非空线性表的特点如下:(1)存在唯一的一个“第一个”元素(2)存在唯一的一个“最后一个”元素(3)除了第一个元素外,序列中的每个元素均只有一个直接前驱(4)除了最后一个元素外,序列中的每个元素均只有一个直接后继。
存储结构:线性表的存储结构分为顺序存储和链式存储。 (1)顺序存储是指用一组地址 连续的存储单元 一次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。这种存储方式下,元素间的逻辑关系无须占用额外的空间来存储。一般以LOC(a1)表示 线性表中第一个元素的存储位置,在顺序存储结构中,第i个 元素ai的存储位置为LOC(ai) = LOC(a1) + (i - 1)*L。其中,L是表中每个数据元素所占空间的字节数。线性表采用顺序结构的优点是可以随时存取表中的元素, 缺点是插入和删除操作需要移动元素。(2)线性表的链式存储是用通过指针连接起来的结点来存储数据元素,基本的结点结构如下:其中,数据域用于存储数据元素的值,指针域则存储当前元素的直接前驱或直接后继位置信息,指针域中的信息称为指针(或链)。存储各数据元素的结点的地址并不要求是连续的,因此存储数据元素的同时必须存储元素之间的逻辑关系。另, 结点空间只有在需要的时候才申请无须事先分配。结点之间通