我正在尝试使用链接列表插入,我理解大部分内容,但我在网上阅读了很多例子,有一件事我看到所有这些都做了,但我不是特别明白为什么,见下文(对于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
答案 0 :(得分:1)
他们正在执行该任务以确保new_node.next
是已知值。如果已分配的内存未初始化,则new_node.next
中可能存在任何垃圾。因此,如果您尝试按照列表,当您到达该节点时,您可能会尝试取消引用无效指针。通过将其设置为self.head
(已知为None
),您可以避免此潜在问题。
分配new_node.next = None
会做同样的事情。