-线性结构的特点:在数据元素的非空有限集中
- 存在唯一的一个被称作’第一个’的数据元素;
- 存在唯一的一个被称作’最后一个’的数据元素;
- 除第一个外,集合中的每一个数据元素均只有一个前驱;
- 除最后一个外,集合中的每一个数据元素均只有一个后继;
线性表的顺序存储
-线性表的顺序表示:
-指用一组地址连续的存储单元一次存储线性表的数据元素
注意:
l代表每一个数据元素所需占的存储单元
-顺序存储线性表的插入和删除思想:
-插入说明:
一般情况下,在第i(1<=i<=n)个元素之前插入一个元素时,需将第n至第i(共n-i+1)个元素向后移动一个位置。
-删除说明:
一般情况下,删除第i(1<=i<=n)个元素时,需将从第i+1至第n(共n-i)个元素向前移动一个位置。
线性表的链式存储
-线性链表的链式存储结构又称做线性链表或单链表
-特点:
用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)
例如:
线性表为{ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG},则改线性表的链式存储结构为:
该线性表的逻辑状态为:
-每一个结点都是由数据域(data)和链域(next)组成。
例如:
对于ai结点:
p–>data = ai
p–>next–>data = ai+1
-线性链表的插入和删除思想:
-插入:
执行操作:
s–>next = p–>next,
p–>next = s;
-线性链表的删除:
执行操作:
p–>next = p–>next–>next;
-双向链表
执行删除操作思想:
p-->prior-->next = p-->next
p-->next-->prior = p-->prior
执行插入操作思想:
设s为要插入的数据,则
s-->data = e;
s-->prior = p-->prior;
p-->prior-->next = s;
s--next = p;
p-->prior = s;
优缺点比较:
顺序存储方式:——适用于需要大量查询的场景
代表例子:ArrayList
优点:查询速度快,对于随机访问get和set效率高
缺点:插入和删除比较麻烦链式存储方式:——适用于大量的插入删除操作场景
代表例子:LinkedList
优点:插入和删除快,对于随机add和remove效率高
缺点:查找比较麻烦