小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
简介
今天我们来学习一下复杂一点的LinkedList:doublyLinkedList。
和LinkedList相比,doublyLinkedList中的节点除了next指向下一个节点之外,还有一个prev之前的一个节点。所以被称为doublyLinkedList。 doublyLinkedList是一个双向链表,我们可以向前或者向后遍历list。
今天我们来学习一下doublyLinkedList的基本操作和概念。
doublyLinkedList的构建
和linkedList一样,doublyLinkedList是由一个一个的节点构成的。而每个节点除了要存储要保存的数据之外,还需要存储下一个节点和上一个节点的引用。
doublyLinkedList需要一个head节点,我们看下怎么构建:
1 | java复制代码public class DoublyLinkedList { |
doublyLinkedList的操作
接下来,我们看一下doublyLinkedList的一些基本操作。
头部插入
头部插入的逻辑是:将新插入的节点作为新的head节点,并且将newNode.next指向原来的head节点。
同时需要将head.prev指向新的插入节点。
看下java代码:
1 | java复制代码 //插入到linkedList的头部 |
尾部插入
尾部插入的逻辑是:找到最后一个节点,将最后一个节点的next指向新插入的节点,并且将新插入的节点的prev指向最后一个节点。
1 | java复制代码 //新节点插入到list最后面 |
插入给定的位置
如果要在给定的位置插入节点,我们需要先找到插入位置的前一个节点,然后将前一个节点的next指向新节点。新节点的prev指向前一个节点。
同时我们需要将新节点的next指向下一个节点,下一个节点的prev指向新的节点。
1 | java复制代码 //插入在第几个元素之后 |
删除指定位置的节点
删除节点的逻辑是:找到要删除节点的前一个节点,和下一个节点。前一个节点的next指向下一个节点,下一个节点的prev指向前一个节点。
1 | java复制代码 //删除特定位置的节点 |
本文的代码地址:
本文收录于 www.flydean.com/algorithm-d…
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
本文转载自: 掘金