我有以下代码,我试图实现插入功能(没有任何OOP技术)。 输出结果为1。 这基本上意味着变量root不作为引用传递。 有没有具体的方法,我能做到吗? 其次,我可以使用单独的链表类来实现它,在这种情况下,我的根节点对于每个链表类对象都是唯一的,并且我不会遇到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)
答案 0 :(得分:2)
最简单的方法是让insert()
返回新的root
def insert(root, data):
temp = root
root = Node(data)
root.next = temp
# Now we return the new root.
return root
<强>测试强>
>>> root = Node(1)
>>> # the root is updated with the new object returned by the insert
>>> root = insert(root, 2)
>>> #This will return the new root.data
>>> print(root.data)
2
答案 1 :(得分:2)
分配到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