五:双链表的增、删、改、查
文章目录
- 前言
- 一、双链表的应用实例
- 二、单链表的缺点分析
- 三、双链表增删改查思路
- 四、代码实现
- 4.1 项目结构
-
- 4.2 HeroNode.java 节点类
- 4.3 DoubleLinkedList.java 双链表类
- 4.4 DoubleLinkedListMain.java 测试类
- 4.5 测试结果
前言
一、双链表的应用实例
使用带head头节点的双向链表实现 - 水浒传英雄排行榜
二、单链表的缺点分析
1、 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找;
2、 单向链表**不能自我删除**,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点(认真体会).;
三、双链表增删改查思路
- 分析 双向链表的遍历,添加,修改,删除的操作思路
1、 遍历方和单链表一样,只是可以向前,也可以向后查找;
2、 第一种添加(默认添加到双向链表的最后);
(1) 先找到双向链表的最后这个节点
(2) temporary.next = newNode;
(3) newNode.pre = temporary;
3、 第二种添加(按编号的顺序添加);
(1)用辅助节点的No与新插入的No比较,找到要插入的前一个节点
(2)先挂载后面:newNode.next = temporary.next; temporary.next.pre = newNode;
(3)在挂载前面:temporary.next = newNode; newNode.pre = temporary;
4、 修改思路和原来的单向链表一样.;
5、 删除;
(1) 因为是双向链表,因此,我们可以实现自我删除某个节点
(2) 直接找到要删除的这个节点,比如temp
(3) temp.pre.next = temp.next
(4) temp.next.pre = temp.pre;
- 上面的思路说明的逻辑图如下:
