Я не понимаю, почему следующий код не будет работать. Когда я добавляю вещи в свой LinkedList, он по-прежнему возвращает true для isEmpty(), а printList() ничего не печатает. Понятно, что я использую ссылки, но не могу понять, в чем я, в свою очередь, заблуждаюсь. Если бы вы могли также указать, есть ли что-то не так с моим дизайном, это было бы здорово.Реализация связанного списка в Python
class Node(object):
def __init__(self, data, next=None):
self.data = data
self.next = next
def __str__(self):
return str(self.data)
class LinkedList(object):
def __init__(self):
self.head = None
self.size = 0
def append(self, *data):
n = self.head
#new_node = Node(data)
if self.head is None:
n = self.head
for elem in data:
n = Node(elem)
n = n.next
self.size += 1
else:
n = self.head
while n.next != None:
n = n.next
for elem in data:
n.next = Node(elem)
n = n.next
self.size += 1
def isEmpty(self):
return self.head is None
def printList(self):
n = self.head
while n is not None:
print str(n)
Этот код никогда не назначает ничего (кроме 'None') для' self.head', что это, вероятно, следует сделать в какой-то момент. –
Но если self.head is None, он назначает Node (elem) на self.head? –
Нет, он присваивает 'n' несколько раз и увеличивает' self.size'. Вы никогда ничего не присваиваете 'self.head' вне' __init__'. – l4mpi