双向链表

发布时间 2023-09-27 10:53:16作者: 翠碧丝

双向链表

双向链表属于链表的一种,也叫双链表双向即是说它的链接方向是双向的,它由若干个节点组成,每个节点都包含下一个节点和上一个节点的指针,所以从双向链表的任意节点开始,都能很方便访问他的前驱结点和后继节点。

 

特点:

  1 创建时无需指定长度。

  2 比起单向,双向需要多一个指向前驱节点的指针,存储空间相对要大一点。

  3 插入跟删除都需要维护nextprev两个指针

 


 

双链表创建

 
空链表:
  

 

插入链尾:

 数据:the monster is coming

   

 

迭代器:

 迭代器的 current 指针初始指向head

   

 执行两次 next 操作, current 指针指向索引为2的节点

    

 设置 current 指针指向索引为3的节点

 

 

 


链表操作

插入:

 在索引1后面插入“big”节点。先将 current 指针指向索引为1的节点,创建一个"big"新节点

 

 入到 current 指向位置

 

 

删除:

 将“big”节点删除,移动当前指针 current 到“but”节点位置

 

 执行删除操作,断掉“big”节点与前后两节点的 next 和 prev 指针,然后将“the”节点与“monster”节点关联起来

 

 

 


双向循环链表

前面的双向链表的 head 节点和链尾没有连接关系,所以如果要访问最后一个节点的话需要从头开始遍历,直到最后一个节点。在双向链表基础上改进一下,把 header 节点的 prev 指针指向最后一个节点,而最后一个节点的 next 指针指向 header 节点,于是便构成双向循环链表。
 

作者:超人汪小建
链接:https://juejin.cn/post/6844903648154271757