Структуры данных. Связные списки

Структуры данных. Связные списки

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



Report Page