1.线性结构
1.1.线性结构特点:
数据元素之间存在一对一的线性关系。
比如一维数组中a[0]=520,那么0这个下标唯一对应520这个值。决定数组中数据元素的只有一个因素,从左到右或者从右到左。不像二维数组那样需要考虑行和列。线性结构中除了第一个元素和最后一个数据元素之外,其它数据元素是首尾相接。
·集合中存在唯一的“第一个元素”和“最后一个元素”。
·除了最后一个元素之外,其它数据元素都有唯一后继。
·除了第一个元素之外,其它数据元素都有唯一前驱。
1.2.线性结构包含两种存储结构:
顺序存储结构和链式存储结构。
顺序存储的线性表是顺序表,链式存储的线性表是链表。
1.3从存储元素地址是否连续上区分:
顺序表中存储元素地址是连续的,比如a[1],a[2],a[3]这几个元素的地址连续(分配一片内存,顺序表中这些元素就依次顺序存放紧挨着)。
链表中存储元素地址不一定连续(可能偶然情况下会连续),每个数据相当于一个节点,节点中存放数据元素以及相邻元素的地址信息,通过指针连起来,这样就方便利用零散的内存(这里放一块,那里放一块,元素之间离散存储,反正可以找到它相邻的节点,通过指针彼此相连)。
1.4线性结构常见的有
①数组②队列③链表④栈
注:栈和队列可以通过数组或者链表来实现
2.非线性结构
2.1.非线性结构特点
非线性结构的数据元素之间就不是一对一的线性关系了。比如树中一个节点,它可能有左节点,右节点。比如图中一个节点可以连着多个节点。也就是,各个数据元素不再保持在一个线性序列中,每个元素可能与零个或多个其它数据元素发生联系。
2.2非线性结构常见的有
①二维数组②多维数组③广义表④树结构⑤图结构
后续会对各种线性结构以及非线性结构做些解释。