gpt4 book ai didi

Python - C 风格链表实现

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:32 24 4
gpt4 key购买 nike

我有以下代码,我正在尝试实现插入功能(没有任何 OOP 技术)。输出是 1。这基本上意味着变量 root 没有作为引用传递。有什么具体的方法,我可以做到吗?其次,我可以使用单独的链表类来实现它,在这种情况下,我的根节点对于每个链表类对象都是唯一的,并且我不会遇到根被错误处理的问题。

能否请您提出建议,我该如何通过以下方式实现它:-

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

def insert(root, data):
temp = root
root = Node(data)
root.next = temp

root = Node(1)
insert(root, 2)
print(root.data)

然而,然后我实现了以下代码,显然它可以工作,但我希望上面的代码可以工作:-

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


class LinkedList:
def __init__(self):
self.root = None

def insert(self, data):
temp = self.root
self.root = Node(data)
self.root.next = temp

ll = LinkedList()
ll.insert(5)
ll.insert(6)
print(ll.root.data)

最佳答案

赋值给root不会修改root指向的对象,但是仍然可以修改root的属性:

def insert(root, data):
# Clone the old root
old_root = Node(root.data)
old_root.next = root.next

# Overwrite with the "new" root and link the old one
root.data = data
root.next = old_root

关于Python - C 风格链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30815468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com