S pomočjo interaktivne simulacije razišči sklad (ang. stack), ki je implementiran s tabelo (ang. array). V sklad lahko elemente dodajaš ali pa jih iz sklada odstranjuješ.
(a) Dopolni modul sklad.py
s funkcijo Vrh
, ki vrne vrh sklada, a ga ne odvzame s sklada.
(b) Dopolni modul sklad.py
s funkcijo Zamenjaj
, ki zamenja element na vrhu sklada z elementom pod njim. Na primer, sklad <10, 20, 30, 40, 50> se po opisani zamenjavi spremeni v sklad <10, 20, 30, 50, 40>.
V programiranju sta vrsta in sklad uporabna za reševanje zelo raznolikih problemov. Oglejmo si primer:
Napiši funkcijo Oklepaji(niz)
, ki sprejme niz, sestavljen iz okroglih, oglatih in zavitih oklepajev, in vrne True
, če so vsi oklepaji zaključeni in pravilno gnezdeni, sicer pa vrne False
. Na primer, za nize '(())'
, '[][]'
in '[(){[]}]'
naj funkcija vrne True
, za nize '(()'
, '[]]['
, '{}}'
in '[(){[}]]'
pa False
.
Nalogo, ki se morda zdi zahtevna, brez večjih težav rešimo s skladom. Ustvarimo prazen sklad, nato pa se sprehodimo po znakih v nizu. Ko naletimo na predklepaj, ga dodamo na sklad. Ko naletimo na zaklepaj, odstranimo vrhnji predklepaj s sklada. Če se ta predklepaj ujema s pravkar prebranim zaklepajem, nadaljujemo z naslednjim znakom niza, sicer pa postopek takoj končamo in vrnemo False
. Če pridemo do konca niza, preverimo, ali je sklad prazen; če je, vrnemo True
, sicer pa vrnemo False
.