线性表的逻辑结构
(a1, a2, ……ai-1, ai, ai+1, …….an)
n(n>=0)个元素的有限集。每个元素的类型是相同的,元素之间的位置关系是一维(线性)的。
线性表的存储结构
**顺序存储 **
一组连续的存储单元来存储表中元素,线性表中在逻辑上相连的元素存储在连续的物理存储单元上。通过数据元素物理存储的连续性来反映数据元素在逻辑上的相邻关系 。
通常使用数组来定义线性表,有固定长度,使用时需判断是否越界,通过游标可以直接访问表中元素(随机访问)。
相关容器:ArrayList
链式存储
内存中存储数据的地址往往是不连续的,逻辑顺序和物理存储顺序并无直接的关联。
每一个节点除了保存自身所需信息都会保存一个引用来存储访问其它节点的地址。
相关容器:LinkList(双向链表)
两种不同存储结构的特性
顺序存储
由于物理地址的连续,使得可以随机访问,但是对于数据的增、删、改,都会使得大量的数据需要进行移动
这会使得时间复杂度大量提升,影响效率。
链式存储
由于每个节点都存储着节点的引用,使得增、删、改数据时,只会影响相邻的节点,而对于整个结构的影响不大,
因此,修改数据时的效率远远高于顺序存储。但也由于物理地址的不连续性,访问数据必须从某个节点(一般为头节点)
开始,依次向后遍历,使得访问效率较低。