đź‘€ Voorbeeld - Naar de supermarkt
Als Roger van de supermarkt thuiskomt, maakt hij eten klaar en begint hij aan de afwas. Hij heeft geen afwasmachine dus wast hij de vuile borden met de hand.
Tijdens het afwassen opserveert hij de stapel afwas en de volgorde van de vuile borden.
đź§ Denkoefening - In en uit de rij
- Roger merkt dat hij ook nog wat vuile borden van gisteren heeft staan en zet die bij de stapel afwas die er al was. Op welke plaats vult hij de afwas aan?
- Wanneer Roger een bord afneemt van de stapel borden om af te wassen, waar neemt hij dat dan?
Wat is het verschil tussen de wachtrij aan de kassa en de stapel borden?
We kunnen bovenstaand voorbeeld modelleren met een stapel.
âť— Definitie - Stapel
Een stapel (stack in het Engels) is een datastructuur waaraan je elementen kan toevoegen en elementen verwijderen. De elementen worden verwijderd in omgekeerde volgorde waarin ze zijn toegevoegd.
Nieuwe elementen worden aan de bovenkant van de stapel toegevoegd en elementen worden ook verwijderd aan de bovenkant van de stapel.
Een wachtrij volgt het LIFO-principe. LIFO staat voor last in, first out.
Net zoals een wachtrij is een stapel geen ingebouwde datastructuur in Python. Maar we kunnen de stapel wel zelf modelleren, met behulp van een klasse Stapel
.
Die zou er bijvoorbeeld zo uit kunnen zien:
class Stapel:
def __init__(self):
self.stapel = []
def push(self,elem):
# Voeg achteraan toe
self.stapel.append(elem)
def pop(self):
# Verwijder achteraan, en return het verwijderde element
elem = self.stapel[-1]
self.stapel = self.stapel[:-1]
return elem
đź’» Programmeeroefening - Eat, sleep, code, repeat
- Kopieer de klasse
Stapel
en plak ze in de editor hieronder.- Maak vervolgens een object aan van deze klasse.
- Voeg achtereenvolgens de volgende strings toe aan de wachtrij: “eat”, “sleep”, “code”, “repeat”
- Verwijder vervolgens de vier toegevoegde elementen door de functie
pop()
vier keer aan te roepen. Print telkens het resultaat van die functie.