我在python中特别遇到了一些问题:
实现一种算法,删除单链表中间的节点,只允许访问该节点
解决方案是:
def deleteNode(linkedlist, node):
if node.next != None:
node.value = node.next.value
node.next = node.next.next
else:
node.value = None
之前我已经完成了一些Java,A = B
带有对象意味着A指的是B.根据这个问题。这是否意味着在python表达式A = B
中 A深拷贝B?
答案 0 :(得分:4)
没有。 A = B
在Python中的工作方式与在Java中的工作方式基本相同。 (某些高级用例存在一些差异,但这些并不重要。)
此功能实际上并不删除节点。它作弊;下一个节点的数据将被复制到此节点,并删除下一个节点。只要没有其他人依赖列表中特定节点的标识,只要有下一个节点,它就可以正常工作。 (看起来它处理没有下一个节点的情况的else
实际上是错误的;它不是从列表中删除数据,而是用虚假的None
值替换数据。)