顺序表和链表对比

逻辑结构上:都是线性结构,线性表

存储结构上:

优点 缺点
顺序表

支持随机存取、

存储密度高

大片连续空间分配不方便

改变容量不方便

链表

离散的小空间分配方便

改变容量方便

不可随机存取

存储密度低

基本操作:

1.创建

顺序表:需要预分配大片连续空间

(分配空间小,则之后不方便扩展容量,分配空间大,则浪费内存空间)

链表:只需分配一个头节点(甚至只声明头指针)

2.销毁

顺序表:

静态分配:静态数组(系统自动回收空间)

动态分配:动态数组(手动free)

(malloc和free必须成对出现)

链表:循环依次删除结点(free)

3.插入和删除

顺序表:

插入删除都要将后续元素后移/前移

时间复杂度O(n),时间开销主要来自于移动元素

(若数据元素很大,则移动的时间代价很高)

链表:

插入删除元素只需修改指针即可

时间复杂度O(n),时间开销主要来自于查找元素

(查找元素时间代价一般更小)

4.查找

顺序表: 按位查找 O(1)

链表:     按位查找 O(n)

顺序表: 按值查找 无序O(n) 有序 折半查找O(log n)

链表:     按值查找 O(n)

5.应用场景:

表长难以预估、经常要增加、删除元素 ——链表

表长可预估、查询操作比较多 ——顺序表 eg:课堂点名

你可能感兴趣的:(数据结构个人笔记,链表,数据结构)