📜  在交替位置将一个链表合并到另一个链表中(1)

📅  最后修改于: 2023-12-03 14:51:23.809000             🧑  作者: Mango

在交替位置将一个链表合并到另一个链表中

有两个链表,我们需要将第一个链表的元素按交替位置插入到第二个链表中。例如,第一个链表是 1->2->3,第二个链表是 4->5,插入后的结果应该是 1->4->2->5->3。

下面是一个示例的 Python 函数可以实现这个功能:

def merge_alternating_lists(list1, list2):
    """
    将 list1 的元素按交替位置插入到 list2 中。

    :param list1: 第一个链表
    :param list2: 第二个链表
    :return: 返回合并后的链表
    """
    # 判断特殊情况
    if not list1:
        return list2
    if not list2:
        return list1

    prev = None
    current1 = list1.head
    current2 = list2.head

    # 遍历两个链表
    while current1 and current2:
        # 记录下一个节点
        next1 = current1.next
        next2 = current2.next

        # 将 current1 插入到 current2 后面
        current1.next = current2.next
        current2.next = current1

        # 更新变量指向下一个节点
        prev = current2
        current1 = next1
        current2 = next2

    # 如果第一个链表还有剩余节点,直接连接到第二个链表的最后一个节点
    if current1:
        prev.next = current1

    # 如果第二个链表还有剩余节点,直接连接到第一个链表的最后一个节点
    if current2:
        prev.next = current2

    return list2

调用这个函数的示例代码如下:

# 创建第一个链表
list1 = LinkedList()
list1.add_end(1)
list1.add_end(2)
list1.add_end(3)

# 创建第二个链表
list2 = LinkedList()
list2.add_end(4)
list2.add_end(5)

# 合并两个链表
result = merge_alternating_lists(list1, list2)

# 打印合并后的链表
print(result)

你可以根据需要修改链表的实现来适应你的需求。以上代码片段用 Python 实现了在交替位置将一个链表合并到另一个链表中,希望对你有帮助!