You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现链表复制,如何在循环中新增空节点连接末尾节点

链表复制拼接实现方案

核心实现逻辑

  • 先遍历原链表找到尾节点
  • 从头开始遍历原链表,为每个节点创建值相同的新节点,依次挂载到原链表尾节点之后
  • 不需要额外创建空节点做衔接,新创建的复制节点直接按顺序挂载即可

完整可运行代码

class Node():
    def __init__(self, data):
        self.next = None
        self.data = data

def Q2():
    class LinkList:
        def __init__(self):
            self.head=None

        def initList(self, data):
            self.head = Node(data[0])
            r=self.head
            p = self.head
            for i in data[1:]:
                node = Node(i)
                p.next = node
                p = p.next
            return r
            
        def printlist(self,head):
            if head == None: 
                return
            node = head
            while node.next != None:
                print(node.data,end='')
                node = node.next
            print(node.data,end='')
            
        # 新增链表复制拼接方法
        def copy_and_concat(self, original_head):
            # 定位原链表尾节点
            tail = original_head
            while tail.next != None:
                tail = tail.next
            # 遍历原链表复制节点
            p = original_head
            while p != None:
                new_node = Node(p.data)
                tail.next = new_node
                tail = tail.next
                p = p.next
                
    data1 = [1,2,3]
    l=LinkList()
    l1=l.initList(data1)
    # 执行复制拼接
    l.copy_and_concat(l1)
    l.printlist(l1)

# 运行函数即可输出123123
Q2()

运行说明

调用新增的copy_and_concat方法后,原存储1→2→3的链表会被拼接上复制的相同链表,最终结构为1→2→3→1→2→3,调用打印方法即可得到预期输出。

内容的提问来源于stack exchange,提问作者Ldemons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:24:01