从单向链表末尾删除节点的程序

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

说明

在此程序中,我们将创建一个单向链表并删除列表末尾的节点。要完成此任务,我们首先找到列表中的倒数第二个节点。然后,将倒数第二个节点设为列表的新尾部。然后,删除列表中的最后一个节点。

Program to delete a node from the end of the singly linked list

在上面的例子中,Node 是列表的尾部。遍历列表以找出倒数第二个节点,在本例中是节点 4。将节点 4 设为列表的新尾部。节点 4 的下一个节点将指向 null。

算法

  1. 创建一个名为 Node 的类,它有两个属性:data 和 next。Next 是指向链表中下一个节点的指针。
  2. 创建另一个名为 DeleteEnd 的类,它有两个属性:head 和 tail。
  3. addNode() 将向列表添加一个新节点
    1. 创建一个新节点。
    2. 它首先检查 head 是否等于 null,这意味着列表为空。
    3. 如果列表为空,则 head 和 tail 都将指向新添加的节点。
    4. 如果列表不为空,新节点将添加到列表末尾,使得 tail 的 next 指向新添加的节点。此新节点将成为列表的新 tail。
  4. DeleteFromEnd() 将从列表中删除末尾的节点
    1. 它首先检查 head 是否为 null(空列表),然后显示消息“列表为空”并返回。
    2. 如果列表不为空,它将检查列表是否只有一个节点。
    3. 如果列表只有一个节点,它将 head 和 tail 都设置为 null。
    4. 如果列表包含多个节点,则遍历列表直到 current 节点指向列表中的倒数第二个节点。
    5. current 节点将成为列表的新尾部。
    6. current 的下一个节点将被设为 null,以删除最后一个节点。
  5. display() 将显示列表中存在的节点
    1. 定义一个节点 current,它最初将指向列表的 head。
    2. 遍历列表直到 current 指向 null。
    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
 
下一主题#