Jak zaimplementować listę wiązaną czyli linked list w Pythonie?

Listy wiązane to podstawowa struktura danych, która umożliwia elastyczne zarządzanie kolekcjami elementów. W przeciwieństwie do tablic, listy wiązane nie wymagają ciągłej przestrzeni w pamięci, co pozwala na efektywne dodawanie i usuwanie elementów. W Pythonie listę wiązaną można zaimplementować, korzystając z klas i odwołań. Pokażemy, jak stworzyć prostą jednokierunkową listę wiązaną, która pozwoli na dodawanie i wyświetlanie elementów.

Implementacja listy wiązanej

class Node:
    # Konstruktor węzła, przechowuje dane i referencję do następnego węzła
    def __init__(self, data):
        self.data = data  # Przechowuje dane
        self.next = None  # Referencja do następnego węzła

class LinkedList:
    # Konstruktor listy, inicjalizuje pustą listę
    def __init__(self):
        self.head = None  # Początek listy

    # Metoda do dodawania elementów na koniec listy
    def append(self, data):
        new_node = Node(data)  # Tworzenie nowego węzła
        if self.head is None:  # Sprawdzanie czy lista jest pusta
            self.head = new_node  # Ustawienie nowego węzła jako głowy
            return
        last_node = self.head
        while last_node.next:  # Przechodzenie do ostatniego węzła
            last_node = last_node.next
        last_node.next = new_node  # Dodanie nowego węzła na końcu

    # Metoda do wyświetlania wszystkich elementów listy
    def print_list(self):
        cur_node = self.head
        while cur_node:  # Przechodzenie przez listę
            print(cur_node.data)  # Wyświetlanie danych węzła
            cur_node = cur_node.next  # Przejście do następnego węzła

# Przykład użycia
if __name__ == "__main__":
    llist = LinkedList()
    llist.append(1)
    llist.append(2)
    llist.append(3)

    llist.print_list()

Wyjaśnienie kodu

W powyższym przykładzie zdefiniowaliśmy dwie klasy: Node, która reprezentuje pojedynczy węzeł w liście wiązanej, przechowujący dane i referencję do następnego węzła, oraz LinkedList, która reprezentuje całą listę wiązaną. Klasa LinkedList zawiera metodę append, służącą do dodawania nowych węzłów na końcu listy, oraz metodę print_list, która pozwala na wyświetlenie wszystkich elementów listy.

Podsumowanie

Lista wiązana w Pythonie jest przykładem elastycznej struktury danych, która pozwala na efektywne zarządzanie kolekcjami elementów. Dzięki implementacji listy wiązanej za pomocą klas, możemy łatwo dodawać i usuwać elementy, a także przeglądać zawartość listy. Prezentowana implementacja jednokierunkowej listy wiązanej może być punktem wyjścia do eksploracji bardziej złożonych struktur danych, takich jak listy dwukierunkowe czy listy cykliczne.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top