1.双向链表介绍
1.1单向链表的缺点
1)单向链表的查找方向只能是一个方向
2)不能自我删除,必须要辅助节点进行遍历,才可以删除
1.2双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个[指针],分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
分析:双向链表的遍历,添加,修改,删除的操作思路
1)遍历方向可以向前也可以向后查找
2)添加(默认添加到双向链表的最后)
a. 先找到双向链表的最后一个节点
b. temp.next=newHeroNode
c. newHeroNode.pre=temp
3)修改 和单项链表的思路一样
根据英雄排名进行查找,遍历的时候也需要中间节点来进行遍历查找
4)删除
a. 因为是双向链表,因此我们可以实现自我删除某个节点
b. 直接找到要删除的这个节点,比如temp
c. temp.pre.next=temp.next
d.temp.next.pre=temp.pre
2.应用示例
2.1题目要求
使用带head头节点的双向链表实现-水浒英雄排行榜
添加:1)按顺序添加
2)按编号添加英雄
2.2代码实现
public class DoubleLinkedListDemo {
public static void main(String[] args) {
//测试
System.out.println("双向链表的测试:");
System.out.println("增添数据并查看:");
HeroNode2 node1 = new HeroNode2(1, "宋江", "及时雨");
HeroNode2 node2 = new HeroNode2(2, "卢俊义", "玉麒麟");
HeroNode2 node3 = new HeroNode2(3, "吴用", "智多星");
HeroNode2 node4 = new HeroNode2(4, "林冲", "豹子头");
HeroNode2 node5 = new HeroNode2(6, "武松", "打虎");
DoubleLinkedList list