问:删除双向链表尾部新节点的程序。

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

说明

在此程序中,我们将创建一个双向链表,并从列表末尾删除一个节点。如果列表为空,则打印消息“列表为空”。如果列表不为空,则尾部的上一个节点将成为列表的新尾部,从而删除列表中的最后一个节点。

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

在上面的示例中,节点 new 是列表的尾部。将尾部的上一个节点(即节点 4)设置为列表的新尾部。节点 4 的 next 指向 null。

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
  2. 为创建双向链表定义另一个类,它有两个节点:head 和 tail。最初,head 和 tail 将指向 null。
  3. deleteFromEnd() 将删除链表末尾的节点
    1. 它首先检查 head 是否为 null(链表为空),然后,它将从函数返回,因为链表中没有节点。
    2. 如果列表不为空,它将检查列表是否只有一个节点。
    3. 如果列表只有一个节点,它将 head 和 tail 都设置为 null。
    4. 如果链表有多个节点,则尾节点的上一个节点将成为链表的新尾节点。
    5. 这个新的尾节点将指向 null,从而删除链表中的最后一个节点。
  4. display() 将显示列表中存在的所有节点。
    1. 定义一个新节点“current”,它将指向头节点。
    2. 打印 current.data 直到 current 指向 null。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

Original List: 
1 2 3 4 5 
Updated 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 5 
Updated 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 5 
Updated 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 5 
Updated 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 5 
Updated List: 
1 2 3 4 
Updated List: 
1 2 3 
Updated List: 
1 2 
Updated List: 
1 
Updated List: 
List is empty
 
下一主题#