线性表的两种具体实现:顺序实现和链式实现。
空间性能:顺序表的存储空间是静态分布的,需要一个长度固定的数组,因此总有部分数组元素被浪费;链表的存储空间是动态分布的,因此不会空间被浪费,但由于链表需要额外的空间来为每个节点保存指针,因此也需要浪费一些空间。
时间性能:顺序表中元素的逻辑顺序与物理存储顺序保持一致,而且支持随机存取,因此顺讯表在查找、读取时性能很好;链表采用链式结构保存表内元素,因此插入、删除元素时性能较好。
线性表是数组的加强:
(1)线性表长度可以动态改变,数组的长度是固定的;
(2)线性表可以插入元素,数组不可以插入;
(3)线性表可以删除元素,数组不可以,数组只能将元素赋值为null,但各自元素依然存在;
(4)线性表提供方法搜索指定位置元素,数组一般不提供;
(5)线性表提供方法清空元素,数组一般不提供。
顺序结构的线性表可以说是包装过的数组。
Java的List接口就代表了线性表,线性表的两种实现分别是ArrayList和LinkList(LinkList还是双向链表)。