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.