数据结构之链表
Posted jiangxiaoxian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之链表相关的知识,希望对你有一定的参考价值。
数组是用连续内存空间,而链表是用零散内存然后通过“指针”串联起来使用。
这样会出现个问题,如果内存有剩余不连续10M的内存空间,你申请10m的数组会oom,但是你申请10m的链表就不会有问题。图片用王争老师的
常用链表分为三种:单向链表;双向链表;循环链表;双向循环链表;
第一种:单向链表
第一个节点叫头结点,头结点用来记录链表基地址(也可以叫首地址)
最后一个节点叫尾节点,特殊之处在于他的next不是指向下一节点而是指向空地址null
我们都知道链表增删与查询的时间复杂度 与数组 是相反的
如图,链表的增删只需要修改相邻两个Node的指针地址就ok了。时间复杂度O(1)
但是单向链表的随机访问时间复杂度是O(n),因为无论如何都需要从首地址依次遍历(双向链表会快一些,比如LinkedList的实现是先判断k与n/2的大小,然后选择是从前往后遍历还是从后往前遍历,最坏是遍历n/2次),才能找到第k个Node.
未完待续。。。
以上是关于数据结构之链表的主要内容,如果未能解决你的问题,请参考以下文章