LinkedList 源码分析

LinkedList数据结构是 双向链表

 

先来讲下单链表和双向链表

 

单链表:链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用来存储数据元素,一个域是指向其他单元的指针,指针域用于指向下一个具有相同结构的节点

 

双向链表:单链表相对于双向链表来说,结构简单。但有一个缺点,即在单链表中只能通过一个节点的引用访问其后续节点,无法直接访问其前驱节点,如果在单链表中想找到某个几点的前驱节点,必须遍历链表,耗费时间。因此扩展了单链表,在单链表结构中新增一个域,该域用于指向结点的直接前驱节点。

 

 

 

默认构造函数

 

 

下面代码中解析了 linkedlist的新增和删除方法

上篇文章讲了linkedlist的新增和删除的效率会比数组的高。链表操作这些方法的时候,只需要改变2个节点各自的前驱指针域和后驱指针域,而数组需要移动很多元素。

 

下面这个方法会告诉我们有头结点的好处,牺牲一个节点的空间是值得的,在双向链表中,头节点的后驱节点永远指向第一个节点,头节点的前驱结点是指向链表的最后一个节点的。

所以需要确认第一个节点和最后一个节点就很容易了,对这2个结点进行操作也变得简单了。

 

 

相对于数组来说  随机查询的效率显然数组较高(当然了,你要是查双向链表的第一个节点和最后一个节点,数组和链表的效率也就不好说了,这里主要指随机访问),数组可以直接根据索引号随机访问,而链表则需要遍历。

 

 

 

呵呵 希望朋友们觉得有哪里不对的指出来,虚心请教。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值