私は以下のコードを持っています。私は最後のノードを削除しようとしています。しかし、ノードは削除されません。 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)'を宣言する必要があります。新しいスタイルクラス –