前言:前面已经学习了顺序表和链表的相关知识(详见往期博客),本篇旨在分析两者中间的区别
注,链表特指带头双向循环链表
一,插入 (顺序表<链表)
顺序表
动态顺序表,空间不够时需要扩容
扩容分为原地扩容和异地扩容
扩容本身存在消耗,还存在空间浪费
链表
没有容量的概念
按需申请释放,不浪费空间
二,应用场景
顺序表
元素高效存储+频繁访问
链表
任意位置插入和删除频繁
三,随机访问(用下标随机访问)(顺序表>链表)
顺序表
支持O(1)
链表
不支持:O(N)
四,存储空间上(顺序表>链表)
顺序表
物理上一定连续
链表
逻辑上连续,但物理上不一定连 续
五,任意位置插入或者删除元素(顺序表<链表)
顺序表
可能需要搬移元素,效率低O(N)
链表
只需修改指针指向
六,缓存利用率
顺序表
高
链表
低
在缓存,缓存命中,直接访问
不在缓存,叫不命中,要把数据先从内存加载到缓存,再访问
因为链表不连续,故效率低