8. Python程序从双向链表的中间删除一个新节点。

17 Mar 2025 | 4 分钟阅读

在此程序中,我们将创建一个双向链表并从列表的中间删除一个节点。如果列表为空,则显示消息“列表为空”。如果列表不为空,我们将计算列表的大小,然后将其除以2以获得列表的中间点。Current 将指向头节点。我们将遍历列表直到到达中点。现在 current 将指向中间节点。我们将删除中间节点,使得 current 的前一个节点将指向 current 的下一个节点。

Python program to delete a new node from the middle of the doubly linked list

考虑上面的例子,上面列表的中间点是 3。从头到中点迭代 current。现在,current 指向需要删除的中间节点。在本例中,节点 new 是需要删除的中间节点。可以通过使节点 2(current 的前一个节点)指向节点 3(current 的下一个节点)来删除 New。将 current 设置为空。

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
  2. 为创建双向链表定义另一个类,它有两个节点:head 和 tail。最初,head 和 tail 将指向 null。
  3. deleteFromMid() 将从链表中删除中间节点
  • 它首先检查 head 是否为 null(链表为空),然后,它将从函数返回,因为链表中没有节点。
  • 如果列表不为空,它将检查列表是否只有一个节点。
  • 如果链表包含多个节点,则它将计算链表的大小。将大小除以 2 并将其存储在变量 mid 中。
  • 遍历列表直到 current 指向列表的中间节点。
  • 将 current 的前一个节点连接到 current 的下一个节点。
  • 通过将 Current 设置为 null 来删除 Current 节点。

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

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

程序

输出

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