📅  最后修改于: 2023-12-03 15:11:16.432000             🧑  作者: Mango
链表是一种动态数据结构,可以方便地插入和删除节点。在链表中插入节点时,需要找到需要插入的位置。本文将介绍在链表中间插入节点的Python程序。
假设我们有以下链表结构:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node1.next = node2
node2.next = node3
node3.next = node4
要在节点2和节点3之间插入一个节点,我们需要进行以下操作:
new_node = ListNode(5)
curr_node = node1
while curr_node.next and curr_node.next.val < new_node.val:
curr_node = curr_node.next
这个循环会遍历链表,直到找到要插入的位置。我们要找到一个节点,它的下一个节点的值大于等于要插入的节点的值。在这个例子中,我们将找到节点2。
new_node.next = curr_node.next
curr_node.next = new_node
这个操作将新节点插入到链表中。我们将新节点的next设置为当前节点的next,然后将当前节点的next设置为新节点。
完整代码如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node1.next = node2
node2.next = node3
node3.next = node4
new_node = ListNode(5)
curr_node = node1
while curr_node.next and curr_node.next.val < new_node.val:
curr_node = curr_node.next
new_node.next = curr_node.next
curr_node.next = new_node
这个程序将在节点2和节点3之间插入新的节点5。