Java 在双向链表中插入新节点到中间的程序

17 Mar 2025 | 4 分钟阅读

在此程序中,我们创建一个双向链表并在列表的中间插入一个新节点。如果列表为空,head 和 tail 都将指向新节点。如果列表不为空,我们将计算列表的大小并将其除以 2,以获得需要插入新节点的中点。

Java program to insert a new node at the middle of the Doubly Linked List

考虑上图;需要在列表的中间添加一个新节点。首先,我们计算大小,在本例中为 4。因此,为了获得中点,我们将它除以 2 并将其存储在一个变量 mid 中。Node current 将指向 head。首先,我们遍历列表,直到 current 指向 mid 位置。定义另一个节点 temp,它指向 current 的下一个节点。在 current 和 temp 之间插入新节点

算法

  • 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
  • 为创建双向链表定义另一个类,它有两个节点:head 和 tail。最初,head 和 tail 将指向 null。
  • addNode() 将向列表中添加节点。
    • 它首先检查头节点是否为 null,然后将节点作为头节点插入。
    • 头节点和尾节点都将指向新添加的节点。
    • 头节点的前一个指针将指向 null,尾节点的下一个指针将指向 null。
    • 如果头节点不为 null,则新节点将插入到列表的末尾,使得新节点的前一个指针将指向尾节点。
    • 新节点将成为新的尾节点。尾节点的下一个指针将指向 null。

a. addInMid() 将在列表的中间添加一个节点

  • 它首先检查 head 是否为 null(空列表),然后它将节点插入为 head。
  • 头节点和尾节点都将指向新添加的节点。
  • 如果列表不为空,那么我们计算大小并将其除以 2 以获得中点。
  • 定义节点 current,它将指向 head,并遍历列表,直到 current 指向 mid 节点。
  • 定义另一个节点 temp,它将指向 current 的下一个节点。
  • 新节点将插入在 current 之后和 temp 之前,使得 current 指向新节点,新节点指向 temp。

a. display() 将显示列表中存在的所有节点。

  • 定义一个新节点“current”,它将指向头节点。
  • 打印 current.data 直到 current 指向 null。
  • 在每次迭代中,current 将指向列表中的下一个节点。

程序

输出

Original list: 
1 2 
Updated List: 
1 3 2 
Updated List: 
1 3 4 2 
Updated List: 
1 3 5 4 2 
下一个主题Java 程序