首页 > 其他 > 详细

数据结构(二)之链表

时间:2018-10-15 00:33:57      阅读:180      评论:0      收藏:0      [点我收藏+]

数组是用连续内存空间,而链表是用零散内存然后通过“指针”串联起来使用。
这样会出现个问题,如果内存有剩余不连续10M的内存空间,你申请10m的数组会oom,但是你申请10m的链表就不会有问题。图片用王争老师的
技术分享图片

常用链表分为三种:单向链表;双向链表;循环链表;双向循环链表;

第一种:单向链表

技术分享图片

第一个节点叫头结点,头结点用来记录链表基地址(也可以叫首地址)
最后一个节点叫尾节点,特殊之处在于他的next不是指向下一节点而是指向空地址null

我们都知道链表增删与查询的时间复杂度 与数组 是相反的
如图,链表的增删只需要修改相邻两个Node的指针地址就ok了。时间复杂度O(1)
技术分享图片

但是单向链表的随机访问时间复杂度是O(n),因为无论如何都需要从首地址依次遍历(双向链表会快一些,比如LinkedList的实现是先判断k与n/2的大小,然后选择是从前往后遍历还是从后往前遍历,最坏是遍历n/2次),才能找到第k个Node.
未完待续。。。

数据结构(二)之链表

原文:https://www.cnblogs.com/jiangxiaoxian/p/9788872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!