をリンクされて、私はいくつかの問題を抱えていたコードです:コード自体は正常に動作しますが、私は、挿入機能を理解するトラブルを抱えているPythonはここで一覧照会
class Node(object):
def __init__(self, data):
self.data = data
self.next = None
class Solution(object):
def insert(self, head, data):
if head == None:
head = Node(data)
else:
current = head
while current.next:
current = current.next
current.next = Node(data)
return head
def display(self, head):
current = head
while current:
print(current.data)
current = current.next
が。最初に、
Head == None
したがって、新しいノードは引数データで作成されます。これは今から新しいヘッドになります。したがって、このリストに新しいノードを追加しようとすると、elseがトリガーされ、新しいノードが起動します。
current.next
が作成されます。ここまでは順調ですね。今度は別のノードを追加したい場合、else条件は再びトリガーされますが、新しい現在のオブジェクトが作成されています。これは古い現在のcurrent.nextのメモリーを上書きしませんか?どのようにプログラムは以前のノードのメモリを持つことができますか?
あなたより。
名前にオブジェクトをバインドすることは、* references *を値渡しすることに似ていることに注意してください。新しいオブジェクトは作成されず、既存のオブジェクトへの新しい参照だけが作成されます。 'current = current.next'は*' * current.next'をコピーしませんが、 'current.next'で参照されるオブジェクトを単に' current'によって参照されるように割り当てます。 – MisterMiyagi
私は他の答えの中から1つを最良の答えとして選択しなければならなかったが、あなたのコメントは私が最も理解してくれたのを助けた@MisterMiyagi – MathsIsHard