插入链接列表时,为什么我不能将头指向插入的值?

时间:2017-01-04 21:15:00

标签: data-structures linked-list

我正在尝试使用链接列表插入,我理解大部分内容,但我在网上阅读了很多例子,有一件事我看到所有这些都做了,但我不是特别明白为什么,见下文(对于if / elif出现故障的道歉):

    # 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 个答案:

答案 0 :(得分:1)

他们正在执行该任务以确保new_node.next是已知值。如果已分配的内存未初始化,则new_node.next中可能存在任何垃圾。因此,如果您尝试按照列表,当您到达该节点时,您可能会尝试取消引用无效指针。通过将其设置为self.head(已知为None),您可以避免此潜在问题。

分配new_node.next = None会做同样的事情。