问:从循环链表的末尾删除新节点的程序。

2025年03月17日 | 阅读 9 分钟

说明

在此程序中,我们将创建一个循环链表并从列表末尾删除一个节点。如果列表为空,将显示“列表为空”消息。如果列表不为空,我们将遍历列表直到到达倒数第二个节点。我们将倒数第二个节点设为新的尾节点,这个新的尾节点将指向头节点并删除原来的尾节点。

Program to delete a new node from the end of the circular linked list

删除末尾节点后的循环链表

Program to delete a new node from the end of the circular linked list

在此,上面的列表中,D 是需要删除的最后一个节点。我们将遍历到 C。将 C 设为新的尾节点,C 将重新指向头节点 A。

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  2. 定义另一个类来创建循环链表,它有两个节点:head 和 tail。它有两个方法:deleteEnd() 和 display()。
  3. deleteEnd() 将从列表末尾删除节点
    1. 它首先检查 head 是否为 null(链表为空),然后,它将从函数返回,因为链表中没有节点。
    2. 如果链表不为空,它将检查链表是否只有一个节点。
    3. 如果列表只有一个节点,它将 head 和 tail 都设置为 null。
    4. 如果列表包含多个节点,则遍历循环直到 current.next != tail。
    5. 现在,current 将指向尾节点之前的节点。将 current 设为新的尾节点,tail 将指向 head,从而从末尾删除节点。
  4. display() 将显示列表中存在的所有节点。
    1. 定义一个新节点“current”,它将指向头节点。
    2. 打印 current.data 直到 current 再次指向 head。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

Original List: 
 1 2 3 4
Updated List: 
 1 2 3
Updated List: 
 1 2
Updated List: 
 1
Updated List: 
List is empty

C

输出

Original List: 
 1 2 3 4
Updated List: 
 1 2 3
Updated List: 
 1 2
Updated List: 
 1
Updated List: 
List is empty

JAVA

输出

Original List: 
 1 2 3 4
Updated List: 
 1 2 3
Updated List: 
 1 2
Updated List: 
 1
Updated List: 
List is empty

C#

输出

Original List: 
 1 2 3 4
Updated List: 
 1 2 3
Updated List: 
 1 2
Updated List: 
 1
Updated List: 
List is empty

PHP

输出

Original List: 
 1 2 3 4
Updated List: 
 1 2 3
Updated List: 
 1 2
Updated List: 
 1
Updated List: 
List is empty
 
下一主题#