简介:
双向链表是一种复杂类型的链表,它的节点包含指向前一个节点和下一个节点的指针。 因此,在双向链表中,节点由三部分组成:节点数据,指向下一个节点的指针(next指针),指向前一个节点的指针(prev指针)。
图示:
与单链表相比:
- 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。
- 单向链表不能自我删除,需要靠辅助节点 ,而双向 链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点(认真体会).
- 相比单链表增加了指向前一个节点的指针(pre)
代码实现:
package com.xawl.linkedlist.doublelinkedlist;
import com.xawl.linkedlist.singlelinkedlist.SingleLinkedListDemo.HeroNode;
public class DoubleLinkedListDemp {
public static void main(String[] args) {
HeroNode2 n1 = new HeroNode2(0, "宋江", "及时雨");
HeroNode2 n2 = new HeroNode2(1, "吴用", "智多星");
HeroNode2 n3 = new HeroNode2(2, "林冲", "豹子头");
HeroNode2 n4 = new HeroNode2(3, "卢俊义", "玉麒麟");
DoubleLinkedList doubleLinkedList = new DoubleLinkedList();
doubleLinkedList.add(n1);
doubleLinkedList.add(n2