Vad är std :: stack?
En stack är en datastruktur som fungerar baserat på LIFO-teknik (Last In First Out). Std :: stack låter endast element läggas till och tas bort från ena änden.
Std :: stack-klassen är en containeradapter. Behållarobjekt innehåller data av samma datatyp. Du kan skapa en stack från olika sekvensbehållare. Om ingen behållare tillhandahålls används deque containe som standard. Behållaradaptrar stöder inte iteratorer, så det kan inte användas för att manipulera data.
I den här C ++ -handledningen lär du dig
- Vad är std :: stack?
- Stack syntax
- Medlemstyper
- Verksamheter i stack
- Stackimplementering
- tryck () och pop ()
- tom (), storlek (), topp ()
- emplace () och swap ()
- Stapla i STL
Stack syntax
För att skapa en stack måste vi inkludera
template> class stack;
- Typ - är den typ av element som finns i std :: stacken. Det kan vara vilken som helst giltig C ++ -typ eller till och med en användardefinierad typ.
- Container - är typen av underliggande containerobjekt.
Medlemstyper
Här är stackmedlemstyper:
- value_type- Den första mallparametern T. Den anger elementtyperna.
- container_type - Den andra mallparametern Container. Det anger den underliggande behållartypen.
- size_type- Osignerad integraltyp.
Verksamheter i stack
En C ++ stack stöder följande grundläggande åtgärder:
- push - Det lägger till / skjuter ett objekt i stacken.
- pop - Det tar bort / poppar ett objekt från stacken.
- peek - Returnerar stapelns översta objekt utan att ta bort det.
- isFull - Kontrollerar om en stack är full.
- isEmpty - Kontrollerar om en stack är tom.
Stackimplementering
Steg 1) Vi har ursprungligen en tom stack. Överst på en tom stack är inställd på -1.
Steg 2) Därefter har vi tryckt in elementet 5 i stacken. Den övre delen av stacken pekar mot elementet 5.
Steg 3) Därefter har vi tryckt in elementet 50 i stacken. Överst på stapeln förskjuts och pekar mot elementet 50.
Steg 4) Vi har sedan utfört en popoperation som tar bort toppelementet från stacken. Elementet 50 poppar från stapeln. Toppens topp pekar nu mot elementet 5.
tryck () och pop ()
Funktionerna stack :: push () lägger till nytt objekt överst på stacken. Stapelstorleken ökas med 1 efter införandet. Funktionen tar denna syntax:
stack.push(value)
Värdet är objektet som ska infogas i stacken.
Funktionen stack :: pop () tar bort stackens övre element. Detta är det nyaste i stacken. Stackstorleken minskas med 1 efter borttagningen. Här är funktionssyntaxen:
stack.pop()
Funktionen tar inga parametrar.
Exempel 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();}}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera stack-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Ring huvudfunktionen (). Programlogiken bör läggas till inom denna funktion.
- Skapa en stackst för att lagra heltalsvärden.
- Använd push () -funktionen för att infoga värdet 10 i stacken.
- Använd push () -funktionen för att infoga värdet 20 i stacken.
- Använd push () -funktionen för att infoga värdet 30 i stacken.
- Använd push () -funktionen för att infoga värdet 40 i stacken.
- Använd pop () -funktionen för att ta bort toppelementet från stacken, det vill säga 40. Toppelementet blir nu 30.
- Använd pop () -funktionen för att ta bort toppelementet från stacken, det vill säga 30. Toppelementet blir nu 20.
- Använd en while-loop och tom () -funktion för att kontrollera om stacken INTE är tom. Den! är INTE operatören.
- Skriva ut det aktuella innehållet i stacken på konsolen.
- Ring pop () -funktionen på stacken.
- Slutet på kroppen för stundslingan.
- Slutet på huvudfunktionen ().
tom (), storlek (), topp ()
Stacks har inbyggda funktioner som du kan använda för att leka med stacken och dess värden. Dessa inkluderar:
- tom () - kontrollerar om en stack är tom eller inte.
- size () - returnerar storleken på stacken, det vill säga antalet element i en stack.
- top () - öppnar stapelelementet högst upp.
Exempel 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;}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att kunna använda dess funktioner.
- Inkludera stackhuvudfilen i vår kod för att kunna använda dess funktioner.
- Inkludera std-namnområdet i vårt program för att kunna använda sina klasser utan att kalla det.
- Skapa funktionen createStack som vi kan använda för att skapa stackmystacket. Stapeln innehåller en uppsättning heltal.
- Början på kroppen för createStack-funktionen.
- Skapa en instans av datatypen mystack och ge den namnet ms.
- Använd while-slingan och den tomma () -funktionen för att kontrollera om stacken är tom.
- Början på stund-öglan.
- Använd top () -funktionen som är lagrad längst upp i stacken. Tecknet \ t skapar en ny flik.
- Använd funktionen pop () för att ta bort elementet högst upp i stacken.
- Slutet på kroppen för stundslingan.
- Skriv ut en tom linje på konsolen.
- Slutet på kroppen för createStack-funktionen.
- Ring huvudfunktionen (). Programlogiken ska läggas till i huvuddelen av funktionen ().
- Början av huvudfunktionens huvud ().
- Skapa ett stackobjekt st.
- Använd push () -funktionen för att sätta in elementet 32 i stacken.
- Använd push () -funktionen för att sätta in elementet 21 i stacken.
- Använd push () -funktionen för att sätta in elementet 39 i stacken.
- Använd push () -funktionen för att sätta in elementet 89 i stacken.
- Använd push () -funktionen för att sätta in elementet 25 i stacken.
- Skriv ut lite text på konsolen.
- Ring till createStack-funktionen för att utföra insättningsoperationerna ovan i stacken.
- Skriv ut storleken på stacken på konsolen tillsammans med annan text.
- Skriv ut elementet högst upp på stacken på konsolen.
- Skriv ut lite text på konsolen.
- Ta bort elementet högst upp på stacken. Den returnerar sedan de återstående elementen i stacken.
- Ring createStack-funktionen för att utföra ovanstående operationer.
- Programmet måste returnera värde när det är klart.
- Slutet på funktionen huvud huvud ().
emplace () och swap ()
Dessa är andra inbyggda stackfunktioner:
- emplace () - konstruktioner infogar sedan nytt element till toppen av stacken.
- swap () - utbyter stackinnehåll med en annan stacks innehåll.
Exempel 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();}}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera stack-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera cstdlib-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Ring huvudfunktionen (). Programlogiken läggs till i denna funktion.
- Förklara en stack med namnet st1 för att lagra heltal.
- Förklara en stack med namnet st2 för att lagra heltal.
- Använd funktionen emplace () för att infoga heltal 12 i stacken med namnet st1.
- Använd funktionen emplace () för att infoga heltal 19 i stacken med namnet st1.
- Använd funktionen emplace () för att infoga heltal 20 i stacken med namnet st2.
- Använd emplace () -funktionen för att infoga heltal 23 i stacken med namnet st2.
- Använd swap () -funktionen för att byta innehållet i de två stackarna, st1 och st2. Innehållet i stacken st1 ska flyttas till stacken st2. Innehållet i stacken st2 ska flyttas till stacken st1.
- Skriv ut lite text på konsolen.
- Använd while-uttalandet och funktionen tom () för att kontrollera om stacken st1 inte är tom.
- Skriv ut innehållet på stacken st1 på konsolen. "" Lägger till utrymme mellan stackelementen när du skriver ut dem på konsolen.
- Utför pop () -funktionen på stacken st1 för att ta bort toppelementet.
- Slutet på kroppsförklaringen.
- Skriv ut lite text på konsolen. Endl är ett C ++ nyckelord för slutraden. Den flyttar muspekaren till nästa rad för att börja skriva ut därifrån.
- Använd while-uttalandet och funktionen tom () för att kontrollera om stacken st2 inte är tom.
- Skriv ut innehållet på stacken st2 på konsolen. "" Lägger till utrymme mellan stackelementen när du skriver ut dem på konsolen.
- Utför pop () -funktionen på stacken st2 för att ta bort toppelementet.
- Slutet på kroppsförklaringen.
- Slutet på huvudfunktionens () kropp.
Stapla i STL
STL (Standardmallbibliotek) kommer med mallklasser som tillhandahåller vanliga C ++ - datastrukturer. Därför kan en stack också implementeras i STL. Vi inkluderar helt enkelt detta bibliotek i vår kod och använder det för att definiera en stack.
stackst;
Ovanstående syntax förklarar en stack st till element av datatyp T.
Exempel 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();}
Produktion:
Här är en skärmdump av koden:
Kodförklaring:
- Inkludera iostream-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera stack-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera cstdlib-rubrikfilen i vår kod för att använda dess funktioner.
- Inkludera std-namnområdet i vår kod för att använda sina klasser utan att kalla det.
- Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
- Förklara en stack st för att lagra heltal data.
- Lägg till elementet 12 i stacken.
- Lägg till elementet 19 i stacken.
- Lägg till elementet 20 i stacken.
- Skriv ut elementet högst upp på stacken på konsolen.
- Skriv ut storleken på stacken på konsolen.
- Slutet på huvudfunktionens huvud ().
Sammanfattning:
- En stack är en datastruktur som fungerar baserat på LIFO-tekniken (Last In first Out).
- Std :: stack tillåter bara att objekt läggs till och tas bort från ena änden.
- Std :: stack-klassen är en containeradapter som innehåller objekt av samma datatyp.
- En stack kan skapas från olika sekvensbehållare.
- Om du inte tillhandahåller en container används deque-behållaren som standard.
- Push () -funktionen är för att infoga objekt i stacken.
- Pop () -funktionen är för att ta bort toppobjektet från steget.
- Den tomma () funktionen är för att kontrollera om en stack är tom eller inte.