顺序表 | 链表 |
---|---|
连续存储的容器 ,在堆上分配空间 | 动态链表,在堆上分配空间 |
提前购买空间,空间大概率不满,空间效率低 | 插入一个数据,购买一个结点,不会造成浪费,空间效率高 |
单独的随机访问空间,因为可以利用到下标所以是O(1) | O(n) |
插入和删除:因为顺序表插入和删除需要挪动元素,所以只有尾部操作才是O(1),其他都是O(n) | 单链表的结点通过指针链接,不需要挪动元素,所以插入和删除的时间复杂度都是O(1) |
尾插:O(1) 头插O(n) 中间插入O(n) | 头插:O(1) 尾插:O(1) 按位置插:O(1) |
尾删:O(1) 头删:O(n) 在中间删除:O(n) | 头删:O(1) 尾删:O(1) 按位置删:O( 1) |