2017-01-04 8 views
-2

私はLinked Listsの挿入に取り組んでいますが、そのほとんどを理解していますが、多くの例をオンラインで読んでいますが、私はそれらのすべてを見ていますが、特に理解できません。リンクされたリストに挿入するとき、なぜ頭を挿入された値に向けることができないのですか?

# Below I understand. Point to the head and point the head to the new value 
    elif self.head.data >= new_node.data: 
     new_node.next = self.head 
     self.head = new_node 


    # This I don't, why can't I just say self.head = new_node? 
    if self.head is None: 
     new_node.next = self.head 
     self.head = new_node 

答えて

1

彼らはnew_node.nextは、既知の値であることを確認するために、その割り当てをやっている:(IF/ELIFが順不同であることのための謝罪)以下。初期化されていないメモリが割り当てられている場合は、new_node.nextにゴミが存在する可能性があります。したがって、リストに従おうとすると、そのノードに移動したときに、無効なポインタの参照を解除しようとする可能性があります。 Noneとして知られているself.headに設定すると、潜在的な問題を回避できます。

new_node.next = Noneを割り当てても同じことが起こります。

関連する問題