10. Python 程序:在循环链表的中间插入一个新节点

2025年1月4日 | 阅读 4 分钟

在这个程序中,我们创建一个循环链表,并在列表的中间插入一个新节点。如果列表为空,head 和 tail 都将指向新节点。如果列表不为空,我们将计算列表的大小,并将其除以 2,以获得列表的中间点,新节点需要插入到该中间点。

Python program to insert a new node at the middle of the Circular Linked List

在列表的中间插入新节点后。

Python program to insert a new node at the middle of the Circular Linked List

考虑上图;新节点需要添加到列表的中间。首先,我们计算大小,在本例中为 4。因此,为了得到中间点,我们将其除以 2 并将其存储在一个名为 count 的变量中。我们将定义两个节点 current 和 temp,以便 temp 指向 head,current 指向 temp 前面的节点。我们遍历列表,直到到达中间点,方法是将 temp 递增到 temp.next,然后在 current 和 temp 之间插入新节点。Current 的 next 节点将是 new,而 new 的 next 节点将是 temp。

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  2. 定义另一个类来创建循环链表,它有两个节点:head 和 tail。变量 size 存储列表的大小。它有两个方法:addInMid() 和 display()。
  3. addInMid() 将节点添加到列表的中间
  • 它首先检查 head 是否为 null(空列表),然后它将节点插入为 head。
  • head 和 tail 都将指向新添加的节点。
  • 如果列表不为空,那么我们计算大小并将其除以 2 以获得中点。
  • 定义节点 temp,它将指向 head,current 将指向 temp 前面的节点。
  • 通过将 temp 递增到 temp.next 来迭代列表,直到到达列表的中间。
  • 新节点将插入在 current 之后和 temp 之前,使得 current 指向新节点,新节点指向 temp。

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

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

程序

输出

Original list: 
1 2 3 4
Updated List: 
1 2 5 3 4
Updated List: 
1 2 5 6 3 4