Java 在循环链表中插入新节点到中间的程序

17 Mar 2025 | 4 分钟阅读

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

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

在列表的中间插入新节点后。

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

考虑上面的图,新节点需要添加到列表的中间。首先,我们计算大小,在本例中为 4。因此,要获得中点,我们将其除以 2 并将其存储在变量 count 中。我们将定义两个节点 current 和 temp,使得 temp 指向 head,current 指向 temp 前面的节点。我们通过将 temp 递增到 temp.next 来迭代列表直到达到中点,然后,在 current 和 temp 之间插入新节点。Current 的下一个节点将是 new,new 的下一个节点将是 temp。

算法

  • 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  • 为创建循环链表定义另一个类,它有两个节点:head 和 tail。变量 size 存储列表的大小。它有两个方法:addInMid() 和 display()。
  • addInMid() 将节点添加到列表的中间
    • 它首先检查 head 是否为 null(空列表),然后它将节点插入为 head。
    • head 和 tail 都将指向新添加的节点。
    • 如果列表不为空,那么我们计算大小并将其除以 2 以获得中点。
    • 定义节点 temp,它将指向 head,current 将指向 temp 前面的节点。
    • 通过将 temp 递增到 temp.next 来迭代列表,直到到达列表的中间。
    • 新节点将插入在 current 之后和 temp 之前,使得 current 指向新节点,新节点指向 temp。

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

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

程序

输出

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