Структуры данных. Связные списки
https://t.me/solidityset
Пример 1
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def display(self):
elements = []
current_node = self.head
while current_node:
elements.append(current_node.data)
current_node = current_node.next
return elements
# Создаем список
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
print(ll.display()) # Вывод: [1, 2, 3]
Пример 2
class DoubleNode:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None # Храним ссылку на последний элемент
def append(self, data):
new_node = DoubleNode(data)
if not self.head: # Список пустой
self.head = new_node
self.tail = new_node
return
# Добавляем в конец
self.tail.next = new_node
new_node.prev = self.tail
self.tail = new_node
def display_forward(self):
"""Проход от начала к концу"""
elements = []
current = self.head
while current:
elements.append(current.data)
current = current.next
return elements
def display_backward(self):
"""Проход от конца к началу — это возможно!"""
elements = []
current = self.tail
while current:
elements.append(current.data)
current = current.prev
return elements