Les piles són un tipus d'adaptadors de contenidors amb el tipus de treball LIFO (Last In First Out), on s'afegeix un element nou en un extrem (superior) i només s'elimina un element d'aquest extrem. Stack utilitza un objecte encapsulat de qualsevol vector o deque (per defecte) o llista (classe de contenidor seqüencial) com a contenidor subjacent, proporcionant un conjunt específic de funcions membre per accedir als seus elements.
foreach bucle mecanografiat
Si hi ha confusió a l'hora de recordar la diferència bàsica entre la pila i la cua, només cal tenir un exemple de la vida real d'aquesta diferenciació, per a la pila, l'apilament de llibres podem agafar el llibre superior fàcilment i per a la cua recordeu quan us heu de posar al davant. de l'ATM per treure l'efectiu, llavors la primera persona propera a l'ATM té la primera oportunitat de treure els diners de l'ATM. Per tant, la cua funciona del tipus FIFO (First In First Out).
Sintaxi de la pila: -
Per crear una pila, hem d'incloure el fitxer de capçalera al nostre codi. A continuació, utilitzem aquesta sintaxi per definir el std::stack:
| plantilla |
Tipus – és el tipus d'element contingut a la std::stack. Pot ser qualsevol tipus de C++ vàlid o fins i tot un tipus definit per l'usuari.
Contenidor – és el tipus d'objecte contenidor subjacent.
Tipus de membres: -
value_type: el primer paràmetre de plantilla, T. Denota els tipus d'element.
container_type: el segon paràmetre de plantilla, Container. Indica el tipus de contenidor subjacent.
size_type: tipus integral sense signar.
Les funcions associades a la pila són:
empty() – Retorna si la pila està buida – Complexitat temporal: O(1)
size() – Retorna la mida de la pila – Complexitat temporal: O(1)
top() – Retorna una referència a l'element superior de la pila – Complexitat temporal: O(1)
push(g) - Afegeix l'element 'g' a la part superior de la pila - Complexitat temporal: O (1)
pop() – Elimina l'element introduït més recentment de la pila – Complexitat temporal: O(1)
C++
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>pila;> >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();> >}> }> |
>
>Sortida
si més si java
22 21>
Complexitat temporal: La complexitat temporal d'aquest programa és O(N), on N és el nombre total d'elements de la pila. El bucle while itera N vegades, treu elements de la pila i els imprimeix.
Complexitat espacial: La complexitat espacial d'aquest programa és O(N), on N és el nombre total d'elements de la pila. L'estructura de dades de la pila utilitza espai proporcional al nombre d'elements emmagatzemats en ella. En aquest cas, la mida màxima de la pila és 5, de manera que la complexitat espacial és constant i també es pot considerar O(1).
Explicació del codi:
- Incloeu el fitxer de capçalera iostream o al nostre codi per utilitzar les seves funcions.
- Incloeu el fitxer de capçalera de la pila al nostre codi per utilitzar les seves funcions si ja s'inclou, no cal que el fitxer de capçalera de la pila ja hi hagi una funció incorporada.
- Incloeu l'espai de noms std al nostre codi per utilitzar les seves classes sense cridar-lo.
- Crida a la funció main(). La lògica del programa s'ha d'afegir dins d'aquesta funció.
- Creeu una pila per emmagatzemar valors enters.
- Utilitzeu la funció push() per inserir el valor 21 a la pila.
- Utilitzeu la funció push() per inserir el valor 22 a la pila.
- Utilitzeu la funció push() per inserir el valor 24 a la pila.
- Utilitzeu la funció push() per inserir el valor 25 a la pila.
- Utilitzeu una variable entera num per introduir un valor de variable. Aquí el seu valor és 0, però podem assignar qualsevol valor enter mitjançant cin>> num.
- Utilitzeu la funció push() per inserir el valor de la variable num.
- Utilitzeu la funció pop() per eliminar l'element superior de la pila, és a dir, 25. L'element superior ara es converteix en 24.
- Utilitzeu la funció pop() per eliminar l'element superior de la pila, és a dir, 24. Ara l'element superior es converteix en 22.
- Utilitzeu un bucle while i la funció empty() per comprovar si la pila NO està buida. El! és l'operador NOT. Per tant, quan la pila no estigui buida, la funció empty() retornarà false i l'operador NOT la convertirà en vertader i el bucle while continuarà funcionant. Però, quan la pila es buida, la funció empty() retornarà true i l'operador NOT ho farà fals i el bucle arribarà a la seva fi.
- Impressió del contingut actual de la pila a la consola.
- Truqueu a la funció pop() de la pila.
- Final del cos del bucle while.
- Final del cos de la funció main().
Llista de funcions de Stack:
- stack::top() en C++ STL
- stack::empty() i stack::size() en C++ STL
- stack::push() i stack::pop() en C++ STL
- stack::swap() en C++ STL
- stack::emplace() en C++ STL
- Articles recents sobre C++ Stack