Java 从循环链表中间删除节点的程序

17 Mar 2025 | 4 分钟阅读

在此程序中,我们将创建一个循环链表并从中删除中间节点。如果列表为空,则显示消息“列表为空”。如果列表不为空,我们将计算列表的大小,然后除以 2 来获取列表的中间点。我们维护两个指针 temp 和 current。Current 将指向 temp 的前一个节点。我们将遍历列表直到达到中间点,然后 current 将指向中间节点。我们通过将 current 的 next 指向 temp 的 next 节点来删除中间节点。

单位矩阵

Java program to delete a node from the middle of the Circular Linked List

删除列表中间节点后的循环链表

Java program to delete a node from the middle of the Circular Linked List

考虑上面的列表。列表大小为 4。节点的中间点是 2。要从列表中删除 C,我们将遍历列表直到中间点。现在 current 将指向 B,temp 将指向 C。当 B 指向 D 时,C 将被删除。

算法

  • 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  • 定义另一个类来创建循环链表,它有两个节点:head 和 tail。它有一个 size 变量和两个方法:deleteMid() 和 display()。
  • deleteMid() 将从列表中删除中间节点
    • 它首先检查 head 是否为 null(空列表),然后返回该函数,因为列表中不存在任何节点。
    • 如果列表不为空,它将检查列表是否只有一个节点。
    • 如果列表只有一个节点,它将 head 和 tail 都设置为 null。
    • 如果列表包含多个节点,则计算列表的大小。将大小除以 2 并将其存储在变量 count 中。
    • Temp 将指向 head,current 将指向 temp 的前一个节点。
    • 遍历列表直到 current 指向列表的中间节点。
    • Current 将指向 temp 后面的节点,即,删除 current 后面的节点。

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

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

程序

输出

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