尾插和尾删
顺序表:O(1)
不带头节点的单链表:遍历链表,删除O(N)
如果将最后一个节点保存:O(1)
任意位置的插入与删除
顺序表O(N),因为涉及到数据的迁移
链表O(1)
顺序表支持随机访问,访问任意位置节点O(1)
链表需要遍历O(N)
底层的空间不同
顺序表底层是一段连续的空间
链表底层是不连续的
顺序表需要扩容
链表不需要扩容
空间利用率有区别,需要结合具体场景看
顺序表不需要频繁申请空间,只有扩容时需要申请
链表每次插入新元素时都需要申请节点空间,会造成1.内存碎片 2 .额外空间浪费 3 .效率低
应用场景不同,视情况而定
顺序表的缓存利用率比链表高
程序刚开始运行前在磁盘里面,当运行起来时加载到内存中,数据也需要加载到内存空间中,CPU运算时需要访问数据,CPU不会直接操作内存空间,因为两者的运行速度天差地别,所以会把数据加载到缓存中,再加上程序具有最近原理性,所以缓存会将数据周围的数据也加载到缓存中,而顺序表底层的空间是连续的,所以说顺序表缓存的利用率更高一点。
顺序表和链表的实现难易程度不同。