顺序表和链表的区别和联系

链表能做的事,顺序表都可以完成,只是操作方法不同,效率不同

不同点 顺序表 链表
存储空间上 物理上一定连续 逻辑上连续,但物理上不一定连续
随机访问 支持O(1) 不支持:O(N)
任意位置插入或者删除元素 可能需要搬移元素,效率低O(N) 只需修改指针指向
插入 动态顺序表,空间不够时需要扩容 没有容量的概念
应用场景 元素高效存储+频繁访问 任意位置插入和删除频繁
缓存利用率

1、先查数据是否在高速缓存,在就直接访问

2、不在高速缓存从内存加载数据到缓存,再访问

从内存加载时访问内存的地址及其后面的一段,与硬件相关,因为它加载当前位置和该位置后面一段的成本差不多,并且也可以认为是当你访问这个数据时,你即将访问附近的数据,当你访问顺序表时缓存能快速命中,这就是顺序表的优势,链表就不一定能访问。

所以如果不是要大量头插头删,用顺序表会更快。

顺序表和链表的区别和联系_第1张图片

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