09-algorithm-doubly-linked-list

9. doublyLinkedList

简介

今天我们来学习一下复杂一点的LinkedList:doublyLinkedList。

和LinkedList相比,doublyLinkedList中的节点除了next指向下一个节点之外,还有一个prev之前的一个节点。所以被称为doublyLinkedList。 doublyLinkedList是一个双向链表,我们可以向前或者向后遍历list。

今天我们来学习一下doublyLinkedList的基本操作和概念。

doublyLinkedList的构建

和linkedList一样,doublyLinkedList是由一个一个的节点构成的。而每个节点除了要存储要保存的数据之外,还需要存储下一个节点和上一个节点的引用。

doublyLinkedList需要一个head节点,我们看下怎么构建:

doublyLinkedList的操作

接下来,我们看一下doublyLinkedList的一些基本操作。

头部插入

头部插入的逻辑是:将新插入的节点作为新的head节点,并且将newNode.next指向原来的head节点。

同时需要将head.prev指向新的插入节点。

看下java代码:

尾部插入

尾部插入的逻辑是:找到最后一个节点,将最后一个节点的next指向新插入的节点,并且将新插入的节点的prev指向最后一个节点。

插入给定的位置

如果要在给定的位置插入节点,我们需要先找到插入位置的前一个节点,然后将前一个节点的next指向新节点。新节点的prev指向前一个节点。

同时我们需要将新节点的next指向下一个节点,下一个节点的prev指向新的节点。

删除指定位置的节点

删除节点的逻辑是:找到要删除节点的前一个节点,和下一个节点。前一个节点的next指向下一个节点,下一个节点的prev指向前一个节点。

本文的代码地址:

learn-algorithmarrow-up-right

本文收录于 www.flydean.comarrow-up-right

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

最后更新于

这有帮助吗?