Rc3eHnGputwzz
Fotografia przedstawia falującą wodę.

PY_I_R_W13B_M05 Dynamiczne struktury danych. Implementacja

Źródło: Michael Benz, dostępny w internecie: unsplash.com, domena publiczna.

W wątku Wybrane algorytmy i ich kodowanie w języku Python zostały opisane wybrane dynamiczne struktury danych takie jak stos, kolejka lista jednokierunkowa. W tym materiale poznasz sposoby ich implementacji.

Jak zaimplementować stos w Pythonie za pomocą listy

Stos (ang. stack) to jedna z najprostszych, a zarazem najważniejszych struktur danych. Opiera się na zasadzie LIFOLast In, First Out, czyli “ostatni wchodzi, pierwszy wychodzi”.
Stosy pojawiają się w wielu miejscach:

  • w działaniu funkcji i rekurencji,

  • przy parsowaniu wyrażeń,

  • w algorytmach przeszukiwania (DFS),

  • w obsłudze cofania akcji (undo),

  • w symulacjach i grach.

W Pythonie stos można stworzyć bardzo łatwo, ponieważ lista (list) zawiera operacje idealnie nadające się do jego obsługi.

Podstawowe operacje stosu

Każdy stos powinien umożliwiać:

  1. push(x) – dodanie elementu na szczyt stosu,

  2. pop() – zdjęcie elementu ze szczytu,

  3. peek() / top() – podejrzenie elementu na szczycie,

  4. is_empty() – sprawdzenie czy stos jest pusty.

Pythonowe listy naturalnie obsługują te operacje dzięki metodom append()pop().

Linia 1. stos znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. kratka push. Linia 4. stos kropka append otwórz nawias okrągły 10 zamknij nawias okrągły. Linia 5. stos kropka append otwórz nawias okrągły 20 zamknij nawias okrągły. Linia 6. stos kropka append otwórz nawias okrągły 30 zamknij nawias okrągły. Linia 8. kratka pop. Linia 9. x znak równości stos kropka pop otwórz nawias okrągły zamknij nawias okrągły kratka zdejmie 30. Linia 10. print otwórz nawias okrągły cudzysłów Zdjęto dwukropek cudzysłów przecinek x zamknij nawias okrągły. Linia 12. kratka peek otwórz nawias okrągły bez usuwania zamknij nawias okrągły. Linia 13. print otwórz nawias okrągły cudzysłów Na szczycie dwukropek cudzysłów przecinek stack otwórz nawias kwadratowy minus 1 zamknij nawias kwadratowy zamknij nawias okrągły. Linia 15. kratka is podkreślnik empty. Linia 16. print otwórz nawias okrągły cudzysłów Czy pusty znak zapytania cudzysłów przecinek len otwórz nawias okrągły stack zamknij nawias okrągły znak równości znak równości 0 zamknij nawias okrągły.