Apilar push() y pop() en C++ STL

Las pilas son un tipo de adaptadores de contenedores que siguen la propiedad LIFO (Último en entrar, primero en salir) , donde se agrega un nuevo elemento en un extremo y un elemento (en la parte superior) se elimina solo de ese extremo. Básicamente, la inserción y la eliminación ocurren en la parte superior de la pila.

pila::empujar()

La función push() se usa para insertar o ‘empujar’ un elemento en la parte superior de la pila. Esta es una función incorporada de C++ Standard Template Library (STL) . Esta función pertenece al archivo de encabezado <stack> . El elemento se agrega al contenedor de pila y el tamaño de la pila aumenta en 1.
Sintaxis:

stackname.push(value)

Parámetros: El valor del elemento a insertar se pasa como parámetro.
Resultado: agrega un elemento de valor igual al del parámetro pasado en la parte superior de la pila.

Ejemplos: 

Input :   mystack
          mystack.push(6);
Output :  6
 
Input :   mystack
          mystack.push(0);
          mystack.push(1);
Output :  0, 1

Errores y excepciones:

  • Muestra un error si el valor pasado no coincide con el tipo de pila. 
  • No muestra ninguna garantía de lanzamiento de excepción si el parámetro no lanza ninguna excepción.

CPP

// CPP program to illustrate
// Implementation of push() function
 
#include <iostream>
#include <stack>
using namespace std;
 
int main()
{
    // Empty stack
    stack<int> mystack;
    mystack.push(0);
    mystack.push(1);
    mystack.push(2);
 
    // Printing content of stack
    while (!mystack.empty()) {
        cout << ' ' << mystack.top();
        mystack.pop();
    }
}
Producción

 2 1 0

NOTA: Aquí, la salida se imprime sobre la base de la propiedad LIFO.

pila::pop()

La función pop() se usa para eliminar o ‘abrir’ un elemento de la parte superior de la pila (el elemento más nuevo o el más alto de la pila). Esta es una función incorporada de la biblioteca de plantillas estándar de C++ (STL). Esta función pertenece al archivo de encabezado <stack> . El elemento se elimina del contenedor de pila y el tamaño de la pila se reduce en 1.
Sintaxis:

stackname.pop()

Parámetros: No se pasan parámetros.

Resultado: elimina el elemento más nuevo de la pila o, básicamente, el elemento superior.

Ejemplos: 

Input :   mystack = 0, 1, 2
          mystack.pop();
Output :  0, 1
 
Input :   mystack = 0, 1, 2, 3, 4, 5
          mystack.pop();
Output :  0, 1, 2, 3, 4

Errores y excepciones:

  • Muestra error si se pasa un parámetro. 
  • No muestra garantía de lanzamiento de excepción.

CPP

// CPP program to illustrate
// Implementation of pop() function
 
#include <iostream>
#include <stack>
using namespace std;
 
int main()
{
    stack<int> mystack;
    mystack.push(1);
    mystack.push(2);
    mystack.push(3);
    mystack.push(4);
    
   // Stack becomes 1, 2, 3, 4
 
    mystack.pop();
    mystack.pop();
  
   // Stack becomes 1, 2
 
    while (!mystack.empty()) {
        cout << ' ' << mystack.top();
        mystack.pop();
    }
}
Producción

 2 1

Nota: Aquí, la salida se imprime sobre la base de la propiedad LIFO.

Aplicación: Dada una cantidad de enteros, agréguelos a la pila y encuentre el tamaño de la pila sin usar la función de tamaño. 

Input : 5, 13, 0, 9, 4
Output: 5

Enfoque: podemos mantener una variable de contador que hará un seguimiento del tamaño de la pila. Cada vez que insertamos (agregamos) elementos en la pila, incrementamos el contador que indica que el tamaño de la pila ha aumentado ahora y cada vez que extraemos (eliminamos) elementos de la pila, luego disminuimos el contador que indica la disminución en el tamaño de la pila.

Algoritmo: 

  • Empuje los elementos dados al contenedor de pila uno por uno. 
  • Siga extrayendo los elementos de la pila hasta que se vacíe e incremente la variable contador. 
  • Imprime la variable contador.

CPP

// CPP program to illustrate
// Application of push()
// and pop() function
 
#include <iostream>
#include <stack>
using namespace std;
 
int main()
{
    int c = 0;
 
    // Empty stack
    stack<int> mystack;
    mystack.push(5);
    mystack.push(13);
    mystack.push(0);
    mystack.push(9);
    mystack.push(4);
    // stack becomes 5, 13, 0, 9, 4
 
    // Counting number of elements in queue
    while (!mystack.empty()) {
        mystack.pop();
        c++;
    }
    cout << c;
}
Producción

5

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente. 

Publicación traducida automáticamente

Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *