Stapels zijn een soort containeradapters met een LIFO-werking (Last In First Out), waarbij aan één uiteinde (boven) een nieuw element wordt toegevoegd en alleen aan dat uiteinde een element wordt verwijderd. Stack gebruikt een ingekapseld object van beide vector of deque (standaard) of lijst (sequentiële containerklasse) als de onderliggende container, waardoor een specifieke set lidfuncties wordt geboden om toegang te krijgen tot de elementen ervan.
commando chown
Als er verwarring bestaat bij het onthouden van het fundamentele verschil tussen stapel en wachtrij, zorg dan voor een voorbeeld uit de praktijk voor dit onderscheid. Voor stapelen, stapelen van boeken kunnen we gemakkelijk het bovenste boek nemen en voor wachtrij onthouden wanneer je vooraan in de rij moet staan van ATM om het geld op te nemen, dan heeft de eerste persoon in de buurt van ATM de eerste kans om het geld uit ATM te halen. De wachtrij is dus van het FIFO-type (First In First Out).
Stapelsyntaxis: -
Om een stapel te maken, moeten we het headerbestand in onze code opnemen. Vervolgens gebruiken we deze syntaxis om de std::stack:
| sjabloon |
Type – is het type element in de std::stack. Het kan elk geldig C++-type zijn of zelfs een door de gebruiker gedefinieerd type.
Houder – is het type onderliggend containerobject.
Lidtypen: -
value_type- De eerste sjabloonparameter, T. Deze geeft de elementtypen aan.
container_type- De tweede sjabloonparameter, Container. Het geeft het onderliggende containertype aan.
size_type- Niet-ondertekend integraaltype.
De functies die verband houden met stapelen zijn:
empty() – Geeft terug of de stapel leeg is – Tijdcomplexiteit: O(1)
size() – Geeft de grootte van de stapel terug – Tijdcomplexiteit: O(1)
top() – Geeft een verwijzing terug naar het bovenste element van de stapel – Tijdcomplexiteit: O(1)
push(g) – Voegt het element ‘g’ toe bovenaan de stapel – Tijdcomplexiteit: O(1)
pop() – Verwijdert het meest recent ingevoerde element van de stapel – Tijdcomplexiteit: O(1)
C++
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>stapel;> >stack.push(21);>// The values pushed in the stack should be of the same data which is written during declaration of stack> >stack.push(22);> >stack.push(24);> >stack.push(25);> >int> num=0;> >stack.push(num);> >stack.pop();> >stack.pop();> >stack.pop();> > >while> (!stack.empty()) {> >cout << stack.top() <<>' '>;> >stack.pop();> >}> }> |
slapen in javascript
>
>Uitvoer
22 21>
Tijdcomplexiteit: De tijdscomplexiteit van dit programma is O(N), waarbij N het totale aantal elementen in de stapel is. De while-lus herhaalt N keer, waarbij elementen uit de stapel worden gehaald en afgedrukt.
Ruimtecomplexiteit: De ruimtecomplexiteit van dit programma is O(N), waarbij N het totale aantal elementen in de stapel is. De stapelgegevensstructuur gebruikt ruimte die evenredig is aan het aantal elementen dat erin is opgeslagen. In dit geval is de maximale grootte van de stapel 5, dus de ruimtecomplexiteit is constant en kan ook als O(1) worden beschouwd.
Code-uitleg:
- Neem het iostream-headerbestand of in onze code op om de functies ervan te gebruiken.
- Neem het stack header-bestand op in onze code om de functies ervan te gebruiken, als het al is opgenomen, dan is er geen stack header-bestand nodig omdat het al een ingebouwde functie bevat.
- Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
- Roep de functie main() aan. Binnen deze functie moet de programmalogica worden toegevoegd.
- Maak een stapel om gehele waarden op te slaan.
- Gebruik de functie push() om de waarde 21 in de stapel in te voegen.
- Gebruik de functie push() om de waarde 22 in de stapel in te voegen.
- Gebruik de functie push() om de waarde 24 in de stapel in te voegen.
- Gebruik de functie push() om de waarde 25 in de stapel in te voegen.
- Gebruik een geheel getal variabele num om een variabelewaarde in te voeren. Hier is de waarde 0, maar we kunnen elke gehele waarde toewijzen met behulp van cin>> num.
- Gebruik de functie push() om de waarde van de num-variabele in te voegen.
- Gebruik de functie pop() om het bovenste element van de stapel te verwijderen, dat wil zeggen 25. Het bovenste element wordt nu 24.
- Gebruik de functie pop() om het bovenste element van de stapel te verwijderen, dat wil zeggen 24. Het bovenste element wordt nu 22.
- Gebruik een while-lus en de functie empty() om te controleren of de stapel NIET leeg is. De ! is de NOT-operator. Dus als de stapel niet leeg is, retourneert de functie empty() false en de NOT-operator converteert deze naar true en de while-lus blijft draaien. Maar als de stapel leeg raakt, retourneert de functie empty() true en de NOT-operator maakt deze false en de lus komt tot een einde.
- De huidige inhoud van de stapel op de console afdrukken.
- Roep de functie pop() op de stapel aan.
- Einde van de body van de while-lus.
- Einde van de hoofdtekst van de functie main().
Lijst met functies van Stack:
- stack::top() in C++ STL
- stack::empty() en stack::size() in C++ STL
- stack::push() en stack::pop() in C++ STL
- stack::swap() in C++ STL
- stack::emplace() in C++ STL
- Recente artikelen over C++ Stack