У меня есть код ниже. Я пытаюсь удалить последний узел. Но узел не удаляется. temp
все еще держит все data
. Я не понял, что в Python назначение означает deep copy or shallow copy
?Почему последний узел не удаляется Связанный список?
class ll:
def __init__(self, data):
self.data = data
self.next = None
def adddata(self, data):
if not self.next:
self.next = ll(data)
return
self.next.adddata(data)
def display(root):
if root == None:
return
print root.data
display(root.next)
def delete_last(root):
temp = root
myfrontptr = root.next
while myfrontptr.next != None:
root = root.next
myfrontptr = myfrontptr.next
if root.next != None and myfrontptr.next == None:
del myfrontptr
return temp
l = ll(1)
l.adddata(5)
l.adddata(3)
l.adddata(2)
l.adddata(0)
l.adddata(4)
l = delete_last(l)
display(l)
'del' не означает« удалить этот объект ». Это означает «отключить эту переменную». Вы отключите локальную переменную 'myfrontptr', но это ничего не делает для списка. – user2357112
Это почти никогда не полезно для 'del' переменной. – user2357112
Не связано с вашим вопросом, но кажется странным, что вы создаете старый класс стиля. В python 2.7 вам нужно объявить 'class ll (object)', если вы хотите (и вы это делаете, не так ли? !!) новые классы стиля –