Doubly LinkedList 即双向链表,在 Singly LinkedList 的基础上又增加了一个指向前一个 node 的指针。
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
Doubly LinkedList(DLL) 与 Singly LinkedList(SLL) 的对比:
- DLL 在删除节点方面比 SLL 更方便。SLL 要找到要删除节点的前一个节点,往往是用遍历整个链表的方法。在 DLL 中,我们可以使用 previousPointer 获取前一个节点。
- DLL 由于多了一个指针,更需要空间,在某些特定的操作操作上比 SLL 更麻烦(比如插入)。
对于双向链表来说,我们主要考虑如下几个操作:
如何在Java中构造一个双向链表
|
|
如何打印出 DLL 中的元素
|
|
如何在 DLL 中插入一个节点
插入一个节点分为四种不同的情况,我们依次来讨论:
如何在 DLL 头部插入节点
|
|
如何在指定节点之后插入
|
|
如何在 DLL 尾部插入节点
|
|
如何在给定节点之前插入节点
|
|
如何删除指定的节点
|
|
如何 reverse DLL
|
|
关于 DLL 的讨论就到这里,以上内容如有纰漏或不足之处,欢迎与我讨论:
邮箱:entropy714@gmail.com
微信:cobain0714
Reference: