Hva er std :: stack?
En stabel er en datastruktur som fungerer basert på LIFO (Last In First Out) -teknikk. Std :: stack lar elementene bare legges til og fjernes fra den ene enden.
Std :: stack-klassen er en containeradapter. Beholderobjekter inneholder data av lignende datatype. Du kan lage en stabel fra forskjellige sekvensbeholdere. Hvis det ikke er gitt noen container, vil deque containe brukes som standard. Beholderadaptere støtter ikke iteratorer, så de kan ikke brukes til å manipulere data.
I denne C ++ opplæringen vil du lære
- Hva er std :: stack?
- Stablesyntaks
- Medlemstyper
- Operasjoner i Stack
- Stakkimplementering
- trykk () og pop ()
- tom (), størrelse (), topp ()
- emplace () og bytt ()
- Stabl i STL
Stablesyntaks
For å lage en stabel, må vi inkludere
template> class stack;
- Type - er typen element som finnes i std :: stack. Det kan være hvilken som helst gyldig C ++ - type eller til og med en brukerdefinert type.
- Container - er typen underliggende containerobjekt.
Medlemstyper
Her er stakkmedlemstyper:
- value_type- Den første malparameteren, T. Den betegner elementtypene.
- container_type - Den andre malparameteren Container. Det betegner den underliggende containertypen.
- size_type- Usignert integrertype.
Operasjoner i Stack
En C ++ -stabel støtter følgende grunnleggende operasjoner:
- push - Det legger til / skyver et element inn i bunken.
- pop - Den fjerner / spretter et element fra bunken.
- peek - Returnerer det øverste elementet i bunken uten å fjerne det.
- isFull - Sjekker om en stabel er full.
- isEmpty - Sjekker om en bunke er tom.
Stakkimplementering
Trinn 1) Vi har i utgangspunktet en tom stabel. Toppen av en tom stabel er satt til -1.
Trinn 2) Deretter har vi skjøvet elementet 5 inn i bunken. Toppen av bunken peker mot elementet 5.
Trinn 3) Deretter har vi skjøvet elementet 50 inn i bunken. Toppen av stabelen skifter og peker mot elementet 50.
Trinn 4) Vi har deretter utført en popoperasjon, og fjernet toppelementet fra bunken. Elementet 50 spratt fra bunken. Toppen av stabelen peker nå mot elementet 5.
trykk () og pop ()
Stakk :: push () -funksjonene legger til nytt element på toppen av stakken. Stabelstørrelsen økes med 1 etter innsettingen. Funksjonen tar denne syntaksen:
stack.push(value)
Verdien er varen som skal settes inn i bunken.
Stakken :: pop () -funksjonen fjerner toppelementet i stakken. Dette er det nyeste elementet i bunken. Stabelstørrelsen reduseres med 1 etter fjerning. Her er funksjonssyntaks:
stack.pop()
Funksjonen tar ingen parametere.
Eksempel 1:
#include#include using namespace std;int main() {stack st;st.push(10);st.push(20);st.push(30);st.push(40);st.pop();st.pop();while (!st.empty()) {cout << ' ' << st.top();st.pop();}}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder stack header-filen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). Programlogikken skal legges til innenfor denne funksjonen.
- Lag en stakk for å lagre heltallverdier.
- Bruk trykk () -funksjonen til å sette inn verdien 10 i bunken.
- Bruk push () -funksjonen til å sette inn verdien 20 i bunken.
- Bruk push () -funksjonen til å sette inn verdien 30 i bunken.
- Bruk trykk () -funksjonen til å sette inn verdien 40 i bunken.
- Bruk pop () -funksjonen til å fjerne toppelementet fra bunken, det vil si 40. Toppelementet blir nå 30.
- Bruk pop () -funksjonen til å fjerne toppelementet fra bunken, det vil si 30. Toppelementet blir nå 20.
- Bruk en while-loop og tom () -funksjon for å sjekke om bunken IKKE er tom. Den! er IKKE operatør.
- Skriver ut det nåværende innholdet i stabelen på konsollen.
- Ring pop () -funksjonen på bunken.
- Slutten på kroppen på stundløkken.
- Slutten av hovedfunksjonen ().
tom (), størrelse (), topp ()
Stabler har innebygde funksjoner som du kan bruke til å leke med stakken og dens verdier. Disse inkluderer:
- tom () - sjekker om en stabel er tom eller ikke.
- størrelse () - returnerer størrelsen på stakken, det vil si antall elementer i en bunke.
- top () - får tilgang til stackelementet øverst.
Eksempel 2:
#include#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack st;st.push(32);st.push(21);st.push(39);st.push(89);st.push(25);cout << "The stack st is: ";createStack(st);cout << "\n st.size() : " << st.size();cout << "\n st.top() : " << st.top();cout << "\n st.pop() : ";st.pop();createStack(st);return 0;}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Ta med iostream header-filen i koden vår for å kunne bruke funksjonene.
- Ta med stack header-filen i koden vår for å kunne bruke funksjonene.
- Inkluder std navneområdet i programmet vårt for å kunne bruke klassene uten å kalle det.
- Lag funksjonen createStack som vi kan bruke til å lage stack mystack. Stakken vil inneholde et sett med heltall.
- Begynnelsen på kroppen til createStack-funksjonen.
- Opprett en forekomst av mystack-datatypen og gi den navnet ms.
- Bruk mens sløyfen og tom () -funksjonen for å sjekke om bunken er tom.
- Starten på kroppen til mens løkken.
- Bruk topp () -funksjonen som er lagret øverst i bunken. Tegnet \ t vil opprette en ny fane.
- Bruk pop () -funksjonen til å slette elementet øverst i bunken.
- Slutten på kroppen på stundløkken.
- Skriv ut en tom linje på konsollen.
- Slutten av kroppen til createStack-funksjonen.
- Ring til hovedfunksjonen (). Programlogikken skal legges til i hovedfunksjonen ().
- Starten på hoveddelen av funksjonen ().
- Lag en stabelobjekt st.
- Bruk trykk () -funksjonen til å sette elementet 32 i bunken.
- Bruk trykk () -funksjonen til å sette elementet 21 i bunken.
- Bruk trykk () -funksjonen til å sette elementet 39 i bunken.
- Bruk trykk () -funksjonen til å sette elementet 89 inn i bunken.
- Bruk trykk () -funksjonen til å sette elementet 25 i bunken.
- Skriv ut litt tekst på konsollen.
- Ring createStack-funksjonen for å utføre innsettingsoperasjonene ovenfor i bunken.
- Skriv ut størrelsen på bunken på konsollen sammen med annen tekst.
- Skriv ut elementet øverst på bunken på konsollen.
- Skriv ut litt tekst på konsollen.
- Slett elementet øverst på bunken. Det vil da returnere elementene som er igjen i bunken.
- Ring createStack-funksjonen for å utføre ovennevnte operasjoner.
- Programmet må returnere verdi etter vellykket gjennomføring.
- Slutten av hoveddelen av funksjonen ().
emplace () og bytt ()
Dette er andre innebygde stabelfunksjoner:
- emplace () - konstruksjoner setter inn nytt element øverst i bunken.
- swap () - bytter innhold fra stabelen med innholdet til en annen stack.
Eksempel 3:
#include#include #include using namespace std;int main() {stack st1;stack st2;st1.emplace(12);st1.emplace(19);st2.emplace(20);st2.emplace(23);st1.swap(st2);cout << "st1 = ";while (!st1.empty()) {cout << st1.top() << " ";st1.pop();}cout << endl << "st2 = ";while (!st2.empty()) {cout << st2.top() << " ";st2.pop();}}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder stack header-filen i koden vår for å bruke funksjonene.
- Inkluder cstdlib header-filen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). Programlogikken vil bli lagt til i kroppen til denne funksjonen.
- Erklare en stabel med navnet st1 for å lagre heltallverdier.
- Deklarer en stabel med navnet st2 for å lagre heltallverdier.
- Bruk emplace () -funksjonen til å sette heltall 12 inn i stakken som heter st1.
- Bruk emplace () -funksjonen til å sette heltall 19 i stakken med navnet st1.
- Bruk emplace () -funksjonen til å sette heltallet 20 inn i stakken som heter st2.
- Bruk emplace () -funksjonen til å sette inn heltallet 23 i stakken med navnet st2.
- Bruk swap () -funksjonen til å bytte innholdet i de to stablene, st1 og st2. Innholdet på stakken st1 skal flyttes til stakken st2. Innholdet på stakken st2 skal flyttes til stakken st1.
- Skriv ut litt tekst på konsollen.
- Bruk while-setningen og den tomme () -funksjonen for å sjekke om stakken st1 ikke er tom.
- Skriv ut innholdet på stakken st1 på konsollen. "" Legger til mellomrom mellom stabelelementene når du skriver dem ut på konsollen.
- Utfør pop () -funksjonen på stakken st1 for å fjerne toppelementet.
- End of the body of the while statement.
- Skriv ut litt tekst på konsollen. Endl er et C ++ nøkkelord for sluttlinjen. Den beveger musepekeren til neste linje for å begynne å skrive ut derfra.
- Bruk while-setningen og den tomme () -funksjonen for å sjekke om stakken st2 ikke er tom.
- Skriv ut innholdet på stack st2 på konsollen. "" Legger til mellomrom mellom stabelelementene når du skriver dem ut på konsollen.
- Utfør pop () -funksjonen på stack st2 for å fjerne toppelementet.
- End of the body of the while statement.
- Slutten av kroppen til hovedfunksjonen ().
Stabl i STL
STL (Standard malbibliotek) kommer med malklasser som gir vanlige C ++ datastrukturer. Derfor kan en stabel også implementeres i STL. Vi tar ganske enkelt med dette biblioteket i koden vår og bruker den til å definere en stabel.
stackst;
Ovennevnte syntaks erklærer en stak st til elementer av datatypen T.
Eksempel 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder stack header-filen i koden vår for å bruke funksjonene.
- Inkluder cstdlib header-filen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). Programlogikken skal legges til i kroppen til denne funksjonen.
- Erklær en stakk for å lagre heltallsdata.
- Legg elementet 12 til bunken.
- Legg elementet 19 til bunken.
- Legg elementet 20 til bunken.
- Skriv ut elementet øverst på bunken på konsollen.
- Skriv ut størrelsen på stabelen på konsollen.
- Slutten av hoveddelen av funksjonen ().
Sammendrag:
- En stabel er en datastruktur som fungerer basert på LIFO (Last In first Out) -teknikken.
- Std :: stack lar bare elementer legges til og fjernes fra den ene enden.
- Std :: stack-klassen er en containeradapter som inneholder elementer av samme datatype.
- En stabel kan opprettes fra forskjellige sekvensbeholdere.
- Hvis du ikke oppgir en container, brukes deque-containeren som standard.
- Trykk () -funksjonen er for å sette inn gjenstander i bunken.
- Pop () -funksjonen er for å fjerne toppelementet fra trinnet.
- Tom () -funksjonen er for å sjekke om en stabel er tom eller ikke.