12. Python 程序在双向链表的中间插入一个新节点。17 Mar 2025 | 4 分钟阅读 在这个程序中,我们创建一个双向链表,并在链表的中间插入一个新节点。如果链表为空,则 head 和 tail 都将指向新节点。如果链表不为空,那么我们将计算链表的大小,并将其除以 2 以获得链表的中点,新节点需要在该中点插入。  考虑上面的图;需要将一个新节点添加到列表的中间。首先,我们计算大小,在本例中为 4。因此,为了获得中点,我们将其除以 2 并将其存储在变量 mid 中。节点 current 将指向 head。首先,我们遍历列表,直到 current 指向中间位置。定义另一个节点 temp,它指向 current 节点之后的节点。在 current 和 temp 之间插入新节点 算法- 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
- 为创建双向链表定义另一个类,它有两个节点:head 和 tail。最初,head 和 tail 将指向 null。
- addNode() 将向列表中添加节点。
- 它首先检查头节点是否为 null,然后将节点作为头节点插入。
- 头节点和尾节点都将指向新添加的节点。
- 头节点的前一个指针将指向 null,尾节点的下一个指针将指向 null。
- 如果头节点不为 null,则新节点将插入到列表的末尾,使得新节点的前一个指针将指向尾节点。
- 新节点将成为新的尾节点。尾节点的下一个指针将指向 null。
a. addInMid() 将节点添加到列表的中间 - 它首先检查 head 是否为 null(空列表),然后它将节点插入为 head。
- 头节点和尾节点都将指向新添加的节点。
- 如果列表不为空,那么我们计算大小并将其除以 2 以获得中点。
- 定义节点 current,它将指向 head 并遍历列表,直到 current 指向中间节点。
- 定义另一个节点 temp,它将指向 current 的下一个节点。
- 新节点将插入在 current 之后和 temp 之前,使得 current 指向新节点,新节点指向 temp。
a. display() 将显示列表中存在的所有节点。 - 定义一个新节点“current”,它将指向头节点。
- 打印 current.data 直到 current 指向 null。
- 在每次迭代中,current 将指向列表中的下一个节点。
程序输出 Original list:
1 2
Updated List:
1 3 2
Updated List:
1 3 4 2
Updated List:
1 3 5 4 2
|