Ваш метод .append()
просто устанавливает локальную переменную на cur_node
, чтобы указывать на new_node
.Это не меняет связанный список вообще;последний узел в ссылке, который ранее был назначен этой локальной переменной, не изменяется.
Вместо этого вы хотите присвоить атрибуту .next
последнего узла:
cur_node.next = new_node
В противном случае цикл while
в методе работает нормально.
Вы также должны не использовать new_node
дважды, когда список пуст.Выход, если у вас еще нет головного узла с данными:
if self.head.data is None:
self.head=new_node
return
Лично я бы установил self.head = None
вместо self.head = Node()
, затем использовал бы if self.head is None:
.
Затем ваша функция отображения забывает напечатать последний элемент.Вместо того, чтобы проверять current.next
, проверьте, является ли current
None
;вот где установка self.head
на None
для пустого списка будет работать намного лучше:
def display(self):
current = self.head
while current is not None
print(current.data)
current = current.next