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
相关产品推荐
相关产品推荐

