Što je std :: stack?
Stog je struktura podataka koja djeluje na temelju LIFO (Last In First Out) tehnike. Stog std :: omogućuje dodavanje i uklanjanje elemenata samo s jednog kraja.
Klasa std :: stack je adapter spremnika. Objekti spremnika sadrže podatke slične vrste podataka. Možete stvoriti stog iz različitih spremnika za slijed. Ako nije osiguran nijedan spremnik, prema zadanim postavkama upotrebljavat će se vodeni kontamin. Prilagodnici spremnika ne podržavaju iteratore, pa se ne mogu koristiti za manipulaciju podacima.
U ovom tutorijalu za C ++ naučit ćete
- Što je std :: stack?
- Sintaksa sloga
- Vrste članova
- Operacije u stogu
- Implementacija stoga
- push () i pop ()
- prazno (), veličina (), vrh ()
- emplace () i swap ()
- Složite u STL
Sintaksa sloga
Da bismo stvorili stog, u naš kod moramo uključiti datoteku zaglavlja
template> class stack;
- Tip - je vrsta elementa koja se nalazi u std :: stogu. To može biti bilo koji valjani tip C ++ ili čak korisnički definirani tip.
- Spremnik - je vrsta temeljnog objekta spremnika.
Vrste članova
Ovdje su vrste člana steka:
- value_type - prvi parametar predloška, T. Označava vrste elemenata.
- container_type - drugi parametar predloška, Container. Označava osnovni tip spremnika.
- size_type - Nepotpisani integralni tip.
Operacije u stogu
C ++ stog podržava sljedeće osnovne operacije:
- push - dodaje / gura stavku u hrpu.
- pop - Uklanja / iskače stavku iz hrpe.
- zaviriti - Vraća gornju stavku stoga bez uklanjanja.
- isFull - Provjerava je li stog pun.
- isEmpty - Provjerava je li stog prazan.
Implementacija stoga
Korak 1) U početku imamo prazan stog. Vrh praznog snopa postavljen je na -1.
Korak 2) Zatim smo gurnuli element 5 u stog. Vrh stoga usmjerit će na element 5.
Korak 3) Zatim smo gurnuli element 50 u stog. Vrh hrpe pomiče se i usmjerava na element 50.
Korak 4) Zatim smo izveli skočnu operaciju uklanjanjem gornjeg elementa iz hrpe. Element 50 iskače iz sloga. Vrh stoga sada pokazuje na element 5.
push () i pop ()
Funkcije stack :: push () dodaju novu stavku na vrh steka. Veličina gomile povećava se za 1 nakon umetanja. Funkcija uzima ovu sintaksu:
stack.push(value)
Vrijednost je stavka koju treba umetnuti u stog.
Funkcija steka :: pop () uklanja gornji element stoga. Ovo je najnovija stavka stoga. Veličina gomile smanjuje se za 1 nakon uklanjanja. Evo sintakse funkcije:
stack.pop()
Funkcija ne uzima parametre.
Primjer 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();}}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod da biste koristili njegove funkcije.
- Uključite datoteku zaglavlja steka u naš kod da biste koristili njegove funkcije.
- Uključite std prostor imena u naš kôd da biste koristili njegove klase bez pozivanja.
- Pozovite glavnu () funkciju. U ovu funkciju treba dodati programsku logiku.
- Stvorite st. St za pohranu cijelih vrijednosti.
- Pomoću funkcije push () umetnite vrijednost 10 u stog.
- Pomoću funkcije push () umetnite vrijednost 20 u stog.
- Pomoću funkcije push () umetnite vrijednost 30 u stog.
- Pomoću funkcije push () umetnite vrijednost 40 u stog.
- Upotrijebite funkciju pop () za uklanjanje gornjeg elementa iz stoga, odnosno 40. Gornji element sada postaje 30.
- Upotrijebite funkciju pop () za uklanjanje gornjeg elementa iz stoga, odnosno 30. Gornji element sada postaje 20.
- Upotrijebite funkciju while loop i empty () da provjerite je li stog NIJE prazan. The! je operator NOT.
- Ispis trenutnog sadržaja stoga na konzoli.
- Pozovite funkciju pop () na hrpi.
- Kraj tijela while petlje.
- Kraj tijela glavne () funkcije.
prazno (), veličina (), vrh ()
Snopovi imaju ugrađene funkcije pomoću kojih se možete poigrati sa stogom i njegovim vrijednostima. To uključuje:
- empty () - provjerava je li stog prazan ili nije.
- size () - vraća veličinu stoga, odnosno broj elemenata u stogu.
- top () - pristupa elementu steka na vrhu.
Primjer 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;}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod kako biste koristili njegove funkcije.
- Uključite datoteku zaglavlja steka u naš kod kako biste koristili njegove funkcije.
- Uključite std prostor imena u naš program kako biste koristili njegove klase bez pozivanja.
- Stvorite funkciju createStack pomoću koje možemo stvoriti stog mystack. Stog će sadržavati skup cijelih brojeva.
- Početak tijela createStack funkcije.
- Stvorite instancu tipa podataka mystack i dajte mu ime ms.
- Upotrijebite while petlju i funkciju empty () da provjerite je li stog prazan.
- Početak tijela while petlje.
- Upotrijebite funkciju top () pohranjenu na vrhu stoga. Znak \ t stvorit će novu karticu.
- Upotrijebite funkciju pop () za brisanje elementa na vrhu stoga.
- Kraj tijela while petlje.
- Ispišite prazan redak na konzoli.
- Kraj tijela createStack funkcije.
- Pozovite glavnu () funkciju. Logiku programa treba dodati unutar tijela glavne () funkcije.
- Početak tijela funkcije main ().
- Stvorite objekt stog sv.
- Pomoću funkcije push () umetnite element 32 u stog.
- Pomoću funkcije push () umetnite element 21 u stog.
- Pomoću funkcije push () umetnite element 39 u stog.
- Pomoću funkcije push () umetnite element 89 u stog.
- Pomoću funkcije push () umetnite element 25 u stog.
- Ispišite malo teksta na konzolu.
- Pozovite funkciju createStack da biste izvršili gore navedene operacije umetanja u stog.
- Ispišite veličinu stoga na konzoli uz drugi tekst.
- Ispišite element na vrhu snopa na konzoli.
- Ispišite malo teksta na konzolu.
- Izbrišite element na vrhu stoga. Zatim će vratiti elemente koji su preostali u stogu.
- Pozovite funkciju createStack za izvršavanje gore navedenih operacija.
- Program mora vratiti vrijednost nakon uspješnog završetka.
- Kraj tijela funkcije main ().
emplace () i swap ()
Ovo su druge ugrađene funkcije steka:
- emplace () - konstruira zatim ubacuje novi element na vrh hrpe.
- swap () - razmjenjuje sadržaj steka sa sadržajem drugog steka.
Primjer 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();}}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod da biste koristili njegove funkcije.
- Uključite datoteku zaglavlja steka u naš kod da biste koristili njegove funkcije.
- Uključite datoteku zaglavlja cstdlib u naš kod da biste koristili njegove funkcije.
- Uključite std prostor imena u naš kôd da biste koristili njegove klase bez pozivanja.
- Pozovite glavnu () funkciju. Logika programa bit će dodana unutar tijela ove funkcije.
- Deklarirajte stog pod nazivom st1 za pohranu cijelih vrijednosti.
- Deklarirajte stog pod nazivom st2 za pohranu cijelih vrijednosti.
- Upotrijebite funkciju emplace () za umetanje cijelog broja 12 u stog nazvan st1.
- Upotrijebite funkciju emplace () za umetanje cijelog broja 19 u stog nazvan st1.
- Upotrijebite funkciju emplace () za umetanje cijelog broja 20 u stog nazvan st2.
- Upotrijebite funkciju emplace () za umetanje cijelog broja 23 u stog nazvan st2.
- Upotrijebite funkciju swap () za zamjenu sadržaja dvaju hrpa, st1 i st2. Sadržaj stoga st1 treba premjestiti u stog st2. Sadržaj stoga st2 treba premjestiti u stog st1.
- Ispišite malo teksta na konzolu.
- Upotrijebite naredbu while i funkciju empty () da provjerite nije li stog st1 prazan.
- Ispišite sadržaj stoga st1 na konzoli. "" Dodaje razmak između elemenata snopa kada ih ispisujete na konzoli.
- Izvršite funkciju pop () na stogu st1 da biste uklonili gornji element.
- Kraj tijela izjave while.
- Ispišite malo teksta na konzolu. Endl je ključna riječ C ++ za krajnji redak. Premješta kursor miša u sljedeći redak da bi se od tamo započelo ispisivanje.
- Upotrijebite naredbu while i funkciju empty () da provjerite nije li stek st2 prazan.
- Ispišite sadržaj stoga st2 na konzoli. "" Dodaje razmak između elemenata snopa kada ih ispisujete na konzoli.
- Izvršite funkciju pop () na stogu st2 da biste uklonili gornji element.
- Kraj tijela izjave while.
- Kraj tijela glavne () funkcije.
Složite u STL
STL (Standard Template Library) dolazi s razredima predložaka koji pružaju uobičajene C ++ strukture podataka. Stoga se stog može implementirati i u STL. Jednostavno uključujemo ovu knjižnicu u naš kod i koristimo je za definiranje stoga.
stackst;
Gornja sintaksa proglašava stog st elementima tipa podataka T.
Primjer 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();}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod da biste koristili njegove funkcije.
- Uključite datoteku zaglavlja steka u naš kod da biste koristili njegove funkcije.
- Uključite datoteku zaglavlja cstdlib u naš kod da biste koristili njegove funkcije.
- Uključite std prostor imena u naš kôd da biste koristili njegove klase bez pozivanja.
- Pozovite glavnu () funkciju. Logiku programa treba dodati unutar tijela ove funkcije.
- Proglasite stog st za pohranu cjelobrojnih podataka.
- Dodajte element 12 u stog.
- Dodajte element 19 u stog.
- Dodajte element 20 u stog.
- Ispišite element na vrhu snopa na konzoli.
- Ispišite veličinu stoga na konzoli.
- Kraj tijela funkcije main ().
Sažetak:
- Stog je struktura podataka koja djeluje na temelju LIFO (Last In first Out) tehnike.
- Stog std :: omogućuje dodavanje i uklanjanje predmeta samo s jednog kraja.
- Klasa std :: stack je adapter spremnika koji sadrži stavke sličnog tipa podataka.
- Stog se može stvoriti iz različitih spremnika za slijed.
- Ako ne navedete spremnik, deque spremnik će se koristiti prema zadanim postavkama.
- Funkcija push () služi za umetanje predmeta u stog.
- Funkcija pop () služi za uklanjanje gornje stavke iz koraka.
- Funkcija empty () služi za provjeru je li stog prazan ili nije.