Мне нужна операция вставки в заголовок для связанного списка, который я реализовал. Однако выполнение этой операции с помощью вызова функции (например, insertToHead) и явной записи операторов там, где они мне нужны, дают разные результаты. Интересно, какое свойство Python приводит к этой разнице, но я не могу понять это.
Чтобы быть более точным c, допустим, у меня есть следующий класс для связанного списка:
class Node:
value = None
nextNode = None
def __init__(self, value):
self.value = value
def insertToHead(self, value):
newHead = Node(value)
newHead.nextNode = self
return newHead
Для связанного списка с одним элементом (скажем, 2) я хочу вставить узел (скажем, 0) в заголовок, чтобы создать связанный список 0 -> 2.
I создал связанный список следующим образом
head = Node(2)
Затем я попытался вставить 0 в заголовок двумя способами:
- Явно писать операторы там, где они мне нужны
newHead = Node(0)
newHead.next = head
head = newHead
Теперь head
равно 0, а не 0 -> 2.
Вызов
insertToHead
head = head.insertToHead(0)
head
равен 0 -> 2 после этого утверждения.
Кто-нибудь знает, почему эти два подхода приводят к разным результатам?