📜  将整个链表插入 other 在第 k 个位置(1)

📅  最后修改于: 2023-12-03 15:09:37.441000             🧑  作者: Mango

将整个链表插入 other 在第 k 个位置

在编写链表相关代码时,经常需要将一个链表插入到另一个链表的指定位置。本文将介绍如何实现将整个链表插入 other 在第 k 个位置的操作。

思路

要将链表 L 插入到链表 other 的第 k 个位置,我们需要首先找到 other 的第 k-1 个节点,并将其 next 指针指向 L 的头节点,同时将 L 的最后一个节点的 next 指向剩下的 other 链表即可。

具体步骤如下:

  1. 找到 other 的第 k-1 个节点 p
  2. L 的最后一个节点 lastNodenext 指向 p 的下一个节点 next
  3. pnext 指向 L 的头节点 head
  4. 返回 other
代码片段

下面是使用 Python 实现将链表 L 插入到链表 other 在第 k 个位置的代码片段:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def insertLinkedList(other: ListNode, L: ListNode, k: int) -> ListNode:
    """
    将链表 L 插入到链表 other 的第 k 个位置
    """
    if not other or not L or k < 1:
        return other
    
    # 找到 other 的第 k-1 个节点 p
    p = other
    for i in range(k-1):
        if not p:
            return other
        p = p.next
    
    # 找到 L 的最后一个节点 lastNode
    lastNode = L
    while lastNode.next:
        lastNode = lastNode.next
    
    # 插入操作
    lastNode.next = p.next
    p.next = L
    return other
使用例子

下面是使用例子,将链表 L 插入到链表 other 在第 3 个位置:

# 初始化链表 other 和 L
other = ListNode(1, ListNode(2, ListNode(3, ListNode(4))))
L = ListNode(5, ListNode(6, ListNode(7)))

# 将 L 插入到 other 的第 3 个位置
other = insertLinkedList(other, L, 3)

# 打印结果
# 预期输出:1 -> 2 -> 5 -> 6 -> 7 -> 3 -> 4
p = other
while p:
    print(p.val, end=' -> ')
    p = p.next
总结

以上就是将整个链表插入 other 在第 k 个位置的方法,希望对大家有所帮助。