为什么需要链表?
既然在保存一组数据时,已经有了数组这一结构,为什么仍然需要链表呢?
这是因为数组在进行某些操作时,复杂度相对较高,因此引入链表来应对不同的场景。
例如,要在如下位置插入数字8, 如果采用数组,除了要把8插入外,还要移动2,3,4,5,数组越大,要移动的元素越多,其复杂度为O(n)。
但是如果采用链表,
只需要改变两个链表指向即可,无论该链表有多长,都只需要改变两个指向,其复杂度为O(1)。
删除同理,因此如果场景需要频繁的进行插入和删除操作,链表的优势是大于数组的。
链表VS数组
- 从物理上来说,也就是在内存中,数组是连续存储的,链表则是分散的。
- 数组支持随机访问,即访问a[1]和a[100]的消耗是一样的,但是链表不行,链表需要从头结点开始一个一个遍历访问下一个结点,直到找到第100个元素的位置。
- 链表的插入,删除效率更高;