Я могу найти две ошибки в вашем коде, которые могут привести к ошибкам. Во-первых, внутри метода добавления функции SinglyLinkedList_tail вы выполняете current = node, что неверно. Потому что «узел» только что был создан, и через него вы не можете перемещаться по связанному списку. Переменная current должна быть инициализирована с помощью tail. Правильный способ:
class SonglyLinkedList_tail:
def __init__(self):
self.tail = None
self.size = 0
def append(self, data):
node = Node(data)
if not self.tail:
self.tail = node
else:
current = tail
while current.next:
current = current.next
current.next = node
self.size += 1
Во-вторых, метод добавления функции SinglyLinkedList_head имеет аналогичную проблему. Его правильная реализация может быть:
def append(self, data):
node = Node(data)
if self.head:
node.next = self.head.next
self.head = node
else:
self.head = node
self.tail = node
self.size += 1