Skladi so vrsta vsebniških adapterjev z načinom delovanja LIFO (Last In First Out), kjer se nov element doda na enem koncu (zgoraj), element pa se odstrani samo s tega konca. Stack uporablja enkapsuliran predmet katerega koli vektor ali deque (privzeto) oz seznam (razred zaporednega vsebnika) kot osnovni vsebnik, ki zagotavlja poseben nabor članskih funkcij za dostop do njegovih elementov.
vklopi javo
Če pride do zmede pri spominjanju osnovne razlike med skladom in čakalno vrsto, potem imejte samo primer iz resničnega življenja za to razlikovanje, za kup, zlaganje knjig lahko enostavno vzamemo zgornjo knjigo, za čakalno vrsto pa si zapomnite, kdaj morate stati v čakalni vrsti spredaj bankomata za dvig gotovine, potem ima prva oseba v bližini bankomata možnost, da dvigne denar z bankomata. Čakalna vrsta torej deluje po sistemu FIFO (First In First Out).
Sintaksa sklada:-
Za ustvarjanje sklada moramo v kodo vključiti datoteko glave. Nato uporabimo to sintakso za definiranje std::stack:
| predlogo |
Vrsta – je vrsta elementa, ki ga vsebuje std::stack. Lahko je katera koli veljavna vrsta C++ ali celo uporabniško definirana vrsta.
Posoda – je vrsta osnovnega vsebniškega objekta.
Vrste članov: -
value_type- Prvi parameter predloge, T. Označuje tipe elementov.
container_type- Drugi parameter predloge, Container. Označuje osnovni tip vsebnika.
size_type- Nepredznačeni integralni tip.
Funkcije, povezane s skladom, so:
empty() – Vrne, ali je sklad prazen – Časovna kompleksnost: O(1)
size() – Vrne velikost sklada – Časovna zahtevnost: O(1)
top() – Vrne sklic na najvišji element sklada – Časovna kompleksnost: O(1)
push(g) – Doda element 'g' na vrh sklada - Časovna kompleksnost: O(1)
pop() – Izbriše zadnji vneseni element sklada – Časovna kompleksnost: O(1)
C++
kaj je $home linux
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>kup;> >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();> >}> }> |
>
>Izhod
22 21>
Časovna zahtevnost: Časovna kompleksnost tega programa je O(N), kjer je N skupno število elementov v skladu. Zanka while se ponovi N-krat, izloči elemente iz sklada in jih natisne.
Kompleksnost prostora: Prostorska kompleksnost tega programa je O(N), kjer je N skupno število elementov v skladu. Podatkovna struktura sklada uporablja prostor sorazmerno s številom elementov, ki so v njej shranjeni. V tem primeru je največja velikost sklada 5, tako da je kompleksnost prostora konstantna in jo je mogoče obravnavati tudi kot O(1).
Razlaga kode:
- Vključite datoteko glave iostream ali v našo kodo za uporabo njenih funkcij.
- V našo kodo vključite datoteko z glavo sklada, če želite uporabiti njene funkcije, če je že vključena, potem datoteke z glavo sklada ne potrebujete, ker ima v njej že vgrajeno funkcijo.
- Imenski prostor std vključite v našo kodo, če želite uporabljati njegove razrede, ne da bi ga priklicali.
- Pokličite funkcijo main(). Znotraj te funkcije je treba dodati programsko logiko.
- Ustvarite sklad za shranjevanje celih vrednosti.
- S funkcijo push() vstavite vrednost 21 v sklad.
- S funkcijo push() vstavite vrednost 22 v sklad.
- S funkcijo push() vstavite vrednost 24 v sklad.
- S funkcijo push() vstavite vrednost 25 v sklad.
- Za vnos vrednosti spremenljivke uporabite celoštevilsko spremenljivko num. Tukaj je njegova vrednost 0, vendar lahko dodelimo poljubno celo število z uporabo cin>> num.
- Uporabite funkcijo push(), da vstavite vrednost spremenljivke num.
- S funkcijo pop() odstranite zgornji element iz sklada, to je 25. Zgornji element zdaj postane 24.
- S funkcijo pop() odstranite zgornji element iz sklada, to je 24. Zgornji element zdaj postane 22.
- Uporabite zanko while in funkcijo empty(), da preverite, ali sklad NI prazen. The ! je operater NOT. Torej, ko sklad ni prazen, bo funkcija empty() vrnila false in ga NE operater pretvoril v true, zanka while pa se bo izvajala naprej. Ko pa sklad postane prazen, bo funkcija empty() vrnila true, operator NOT pa jo bo spremenil v false in zanka se konča.
- Tiskanje trenutne vsebine sklada na konzoli.
- Pokličite funkcijo pop() na skladu.
- Konec telesa zanke while.
- Konec telesa funkcije main().
Seznam funkcij Stacka:
- stack::top() v C++ STL
- stack::empty() in stack::size() v C++ STL
- stack::push() in stack::pop() v C++ STL
- stack::swap() v C++ STL
- stack::emplace() v C++ STL
- Nedavni članki o C++ Stack