双向链表的优点:
传统的链表沿着链表的反向遍历是困难的,以及操作某个节点的前一个元素,也是十分的困难。
双向链表提供了这些能力,即可以向前遍历,也可以向后遍历。其中实现在于每个链节点有两个指向其它节点的引用。一个指向前驱节点,一个像传统链表一样指向后继节点。
class Node <T>{
public T val;
public Link<T> next;
public Link<T> pre;
public Link(T val) {
this.val = val;
}
}
删除双向链表中的某个节点
思路:
不再需要像单向链表那样找到要操作位置的前一个节点
而是直接找到要操作的节点
temp.pre.next = temp.next
temp.next.pre = temp.pre
修改双向链表中的某个节点
思路:
和单向链表的一样
在双向链表最后add
思路:
和单向链表一样
遍历到temp.next = null的为止
temp.next = newNode;
newNode.pre = temp;
在双向链表中间插入
思路
和单向链表一样