#python #data-structures #methods #singly-linked-list
Вопрос:
Я новичок в python и хотел создать единый связанный список, а затем добавить узел в конце списка. но у меня есть проблема… Когда я хочу отобразить элементы списка, он отображает мне значение последнего узла, который я вставил. Что мне следует сделать, чтобы устранить эту проблему??
class Node:
def __init__(self, value):
self.info = value
self.link = None
class SingleLinkedList:
def __init__(self):
self.start = None
def create_list(self):
n = int(input('enter number of nodes '))
if n == 0:
return
for i in range(n):
b = int(input('enter the element to be inserted '))
def insert_at_end(self, data):
temp = Node(data) #insertion in the empty linked list
if self.start is None:
self.start = temp
return
p = self.start
while p is not None:
p = p.link
p.link = temp
def display_list(self):
if self.start is None:
print('linked list is empty')
else:
print('list is: ')
p = self.start
while p is not None:
print(p.info, "", end='')
p = p.link
print()
test = SingleLinkedList()
test.create_list()
data = 70
test.insert_at_end(data)
test.display_list()
Комментарии:
1. Ваша функция «create_list» нигде не хранит введенные элементы.
2. Я предполагаю, что вы пропускаете строку
self.insert_at_end(b)
внутриfor i in range(n)
циклаcreate_list
.3. Там также есть ошибка
insert_at_end
: в то время как-тест должен бытьwhile p.link is not None
.4. @Mahzad да, но вы ни для чего не используете букву «b», а также, на следующей итерации цикла for, она будет изменена, поэтому вы потеряли эти данные.
5. Кроме того, эта
if n == 0:
деталь не нужна.