Как можно вывести связанный список используя __str__ без дополнительных классов?
class Node:
def __init__(self, data, next):
self.data = data
self.next = next
class List:
head = None
tail = None
def print_list(self):
a = self.head
while a is not None:
print(a.data)
a = a.next
def append(self, data):
node = Node(data, None)
if self.head is None:
self.head = self.tail = node
else:
self.tail.next = node
self.tail = node
p = List()
p.append(15)
p.append(25)
p.print_list()
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Попробуйте так:
class Node:
def __init__(self, data, next):
self.data = data
self.next = next
def __str__(self):
return str(self.data)
class List:
head = None
tail = None
def __str__(self):
a = self.head
res = ""
while a is not None:
res += (" -> " if res else "") + str(a)
a = a.next
return res
def print_list(self):
a = self.head
while a is not None:
print(a.data)
a = a.next
def append(self, data):
node = Node(data, None)
if self.head is None:
self.head = self.tail = node
else:
self.tail.next = node
self.tail = node
p = List()
p.append(15)
p.append(25)
#p.print_list()
print(p)
выведет
15 -> 25
Автор решения: CrazyElf
→ Ссылка
Независимо от MaxU уважаемого я набросал тоже класс, но добавил возможность итерироваться по классу и использовал это при печати оного (подсмотрев только стрелку в качестве разделителя у MaxU):
class Node:
def __init__(self, data, next):
self.data = data
self.next = next
def __str__(self):
return str(self.data)
class List:
head = None
tail = None
def append(self, data):
node = Node(data, None)
if self.head is None:
self.head = self.tail = node
else:
self.tail.next = node
self.tail = node
def __iter__(self):
a = self.head
while a is not None:
yield a
a = a.next
def __str__(self):
return ' -> '.join(map(str,self))
p = List()
p.append(5)
p.append(15)
p.append(25)
print(p)
Вывод:
5 -> 15 -> 25