顺序表和链表不同环境下优缺点比较

简介: 顺序表和链表不同环境下优缺点比较

1.存取(读写)方式


顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取。一个是数组的存储方式另一个是头指针的存储形式。


2.逻辑结构和物理结构


顺序表存储时逻辑上是相邻的元素,对应的物理位置也是相邻的。采用链式存储时,逻辑上相邻的元素,物理存储位置不一定相邻,对应的逻辑关系是通过指针链接来表示的。


3.查找、插入和删除


对于按值查找,顺序表无序时,两者的时间复杂度均为O(n);存储的队列有序时,顺序表可用折半查找,此时的时间复杂度为O()。


对于按序号查找,顺序表时间复杂度为O(1),而链表的平均时间复杂度为O(n)。


插入和删除操作顺序表平均需要移动半个表长,而链表只需要修改相关节点的指针域即可。


4.空间分配


顺序表存储就是数组存储,数组确定了存储空间不能扩充,若加入新元素则会出现内存溢出。动态存储虽然可以扩充但是需要移动大量元素,操作效率低。链式存储的节点空间只在需要时申请分配,操作灵活高效。


选取策略


1.基于存储的考虑


难以估计线性表的长度或存储规模时用链表存储,有固定长度的用顺序表存储方便。


2.基于运算的考虑


常做按序号访问元素时,顺序表时间复杂度为O(1),链表为O(n),显然用顺序表。

按值访问元素时二者一样。

常进行插入、删除操作时,最优使用链表存储。


3.基于使用环境的考虑


顺序表存储较为容易实现,任何语言中都有数组类型;而链表操作是基于指针的较为复杂,指针也不稳定,出错问题就复杂。

目录
相关文章
|
1月前
|
存储
顺序表和链表(2)
【10月更文挑战第23天】
顺序表和链表(2)
|
1月前
|
存储 算法 数据管理
顺序表和链表(1)
【10月更文挑战第22天】
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
26 3
|
6月前
|
存储 缓存 算法
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
54 0
|
4月前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
32 0
|
4月前
|
存储 缓存
【数据结构】——顺序表与链表
【数据结构】——顺序表与链表
|
6月前
|
存储 索引
顺序表和链表
通过以上示例,我们可以看到顺序表和链表在实际应用中如何操作。顺序表适合于需要频繁读取数据的场景,而链表则更适用于频繁修改数据的情况。在选择使用哪种数据结构时,应考虑到实际应用的需求和上下文环境。
41 2
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
61 2