Stabler er en type beholderadaptere med LIFO (Last In First Out) funktionstype, hvor et nyt element tilføjes i den ene ende (øverst), og et element fjernes kun fra den ende. Stack bruger et indkapslet objekt af enten vektor eller deque (som standard) eller liste (sekventiel containerklasse) som dens underliggende container, der giver et specifikt sæt medlemsfunktioner for at få adgang til dens elementer.
tuple java
Hvis der er forvirring i at huske den grundlæggende forskel mellem stak og kø, så bare hav et virkeligt eksempel på denne differentiering, for stak, stabling af bøger kan vi nemt tage den øverste bog og for kø husk hvornår du skal stå i kø foran af hæveautomaten for at tage kontanterne ud, så har den første person i nærheden af hæveautomaten den første chance for at tage pengene ud af hæveautomaten. Så kø er typen FIFO (First In First Out) der fungerer.
Staksyntaks:-
For at oprette en stak skal vi inkludere header-filen i vores kode. Vi bruger derefter denne syntaks til at definere std::stack:
| skabelon |
Type – er den type element, der er indeholdt i std::stakken. Det kan være en hvilken som helst gyldig C++-type eller endda en brugerdefineret type.
Beholder – er typen af underliggende containerobjekt.
Medlemstyper: -
value_type- Den første skabelonparameter, T. Den angiver elementtyperne.
container_type- Den anden skabelonparameter, Container. Det angiver den underliggende beholdertype.
size_type- Usigneret integraltype.
Funktionerne forbundet med stack er:
empty() – Returnerer om stakken er tom – Tidskompleksitet: O(1)
size() – Returnerer stakkens størrelse – Tidskompleksitet : O(1)
top() – Returnerer en reference til det øverste element i stakken – Tidskompleksitet : O(1)
push(g) – Tilføjer elementet 'g' øverst i stakken – Tidskompleksitet : O(1)
pop() – Sletter det senest indtastede element i stakken – Tidskompleksitet: O(1)
C++
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>stak;> >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();> >}> }> |
>
>Produktion
første ordens logik
22 21>
Tidskompleksitet: Tidskompleksiteten af dette program er O(N), hvor N er det samlede antal elementer i stakken. While-løkken itererer N gange, springer elementer fra stakken og udskriver dem.
Rumkompleksitet: Rumkompleksiteten af dette program er O(N), hvor N er det samlede antal elementer i stakken. Stakdatastrukturen bruger plads proportionalt med antallet af elementer, der er gemt i den. I dette tilfælde er stakkens maksimale størrelse 5, så pladskompleksiteten er konstant og kan også betragtes som O(1).
Kodeforklaring:
- Inkluder iostream-headerfilen eller i vores kode for at bruge dens funktioner.
- Inkluder stack-header-filen i vores kode for at bruge dens funktioner, hvis den allerede er inkluderet, så behøver du ikke stack-header-fil, fordi den allerede har indbygget funktion i den.
- Inkluder std-navneområdet i vores kode for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken skal tilføjes i denne funktion.
- Opret en stak for at gemme heltalsværdier.
- Brug push()-funktionen til at indsætte værdien 21 i stakken.
- Brug push()-funktionen til at indsætte værdien 22 i stakken.
- Brug push()-funktionen til at indsætte værdien 24 i stakken.
- Brug push()-funktionen til at indsætte værdien 25 i stakken.
- Brug en heltalsvariabel num til at indtaste en variabelværdi. Her er dens værdi 0, men vi kan tildele enhver heltalsværdi ved hjælp af cin>> num.
- Brug push()-funktionen til at indsætte værdien af num variabel.
- Brug pop()-funktionen til at fjerne det øverste element fra stakken, det vil sige 25. Det øverste element bliver nu 24.
- Brug pop()-funktionen til at fjerne det øverste element fra stakken, det vil sige 24. Det øverste element bliver nu 22.
- Brug en while-løkke og en tomme()-funktion til at kontrollere, om stakken IKKE er tom. Det ! er NOT-operatøren. Så når stakken ikke er tom, vil funktionen empty() returnere false og NOT-operatoren konverterer den til true og while-løkken fortsætter med at køre. Men når stakken bliver tom, vil funktionen empty() returnere sand, og NOT-operatoren vil gøre den falsk, og løkken slutter.
- Udskrivning af det aktuelle indhold af stakken på konsollen.
- Kald pop()-funktionen på stakken.
- Enden af mens-løkkens krop.
- Slutningen af hoved() funktionsteksten.
Liste over funktioner i Stack:
- stack::top() i C++ STL
- stack::empty() og stack::size() i C++ STL
- stack::push() og stack::pop() i C++ STL
- stack::swap() i C++ STL
- stack::emplace() i C++ STL
- Seneste artikler om C++ Stack