Apilar en C ++ STL con ejemplo

Tabla de contenido:

Anonim

¿Qué es std :: stack?

Una pila es una estructura de datos que funciona según la técnica LIFO (Last In First Out). Std :: stack permite agregar y eliminar elementos de un solo extremo.

La clase std :: stack es un adaptador de contenedor. Los objetos de contenedor contienen datos de un tipo de datos similar. Puede crear una pila a partir de varios contenedores de secuencia. Si no se proporciona ningún contenedor, el deque containe se utilizará de forma predeterminada. Los adaptadores de contenedor no admiten iteradores, por lo que no se pueden usar para manipular datos.

En este tutorial de C ++, aprenderá

  • ¿Qué es std :: stack?
  • Sintaxis de la pila
  • Tipos de miembros
  • Operaciones en pila
  • Implementación de pila
  • empujar () y hacer estallar ()
  • vacío (), tamaño (), superior ()
  • emplace () y swap ()
  • Apilar en STL

Sintaxis de la pila

Para crear una pila, debemos incluir el archivo de encabezado en nuestro código. Luego usamos esta sintaxis para definir std :: stack:

template  > class stack;
  • Tipo : es el tipo de elemento contenido en std :: stack. Puede ser cualquier tipo C ++ válido o incluso un tipo definido por el usuario.
  • Contenedor : es el tipo de objeto contenedor subyacente.

Tipos de miembros

A continuación, se muestran los tipos de miembros de la pila:

  • value_type- El primer parámetro de plantilla, T. Denota los tipos de elementos.
  • container_type: el segundo parámetro de plantilla, Container. Denota el tipo de contenedor subyacente.
  • size_type: tipo integral sin firmar.

Operaciones en pila

Una pila de C ++ admite las siguientes operaciones básicas:

  • empujar: agrega / empuja un elemento a la pila.
  • pop: quita / hace estallar un elemento de la pila.
  • peek: devuelve el elemento superior de la pila sin eliminarlo.
  • isFull: comprueba si una pila está llena.
  • isEmpty: comprueba si una pila está vacía.

Implementación de pila

Paso 1) Inicialmente tenemos una pila vacía. La parte superior de una pila vacía se establece en -1.

Paso 2) A continuación, hemos introducido el elemento 5 en la pila. La parte superior de la pila apuntará al elemento 5.

Paso 3) A continuación, hemos introducido el elemento 50 en la pila. La parte superior de la pila se desplaza y apunta al elemento 50.

Paso 4) Luego hemos realizado una operación emergente, eliminando el elemento superior de la pila. El elemento 50 se saca de la pila. La parte superior de la pila ahora apunta al elemento 5.

empujar () y hacer estallar ()

Las funciones stack :: push () agregan un nuevo elemento a la parte superior de la pila. El tamaño de la pila aumenta en 1 después de la inserción. La función toma esta sintaxis:

stack.push(value)

El valor es el elemento a insertar en la pila.

La función stack :: pop () elimina el elemento superior de la pila. Este es el elemento más nuevo de la pila. El tamaño de la pila se reduce en 1 después de la eliminación. Aquí está la sintaxis de la función:

stack.pop()

La función no toma parámetros.

Ejemplo 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();}}

Producción:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de la pila en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres std en nuestro código para usar sus clases sin llamarlo.
  4. Llame a la función main (). La lógica del programa debe agregarse dentro de esta función.
  5. Cree una pila st para almacenar valores enteros.
  6. Utilice la función push () para insertar el valor 10 en la pila.
  7. Utilice la función push () para insertar el valor 20 en la pila.
  8. Utilice la función push () para insertar el valor 30 en la pila.
  9. Utilice la función push () para insertar el valor 40 en la pila.
  10. Utilice la función pop () para eliminar el elemento superior de la pila, es decir, 40. El elemento superior ahora se convierte en 30.
  11. Utilice la función pop () para eliminar el elemento superior de la pila, es decir, 30. El elemento superior ahora se convierte en 20.
  12. Use un bucle while y una función vacía () para verificar si la pila NO está vacía. Los ! es el operador NOT.
  13. Imprimiendo el contenido actual de la pila en la consola.
  14. Llame a la función pop () en la pila.
  15. Fin del cuerpo del bucle while.
  16. Fin del cuerpo de la función main ().

vacío (), tamaño (), superior ()

Las pilas tienen funciones incorporadas que puede usar para jugar con la pila y sus valores. Éstos incluyen:

  • vacío (): comprueba si una pila está vacía o no.
  • size (): devuelve el tamaño de la pila, es decir, el número de elementos en una pila.
  • top (): accede al elemento de pila en la parte superior.

Ejemplo 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;}

Producción:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de la pila en nuestro código para poder usar sus funciones.
  3. Incluya el espacio de nombres std en nuestro programa para poder usar sus clases sin llamarlo.
  4. Cree la función createStack que podemos usar para crear la pila mystack. La pila contendrá un conjunto de números enteros.
  5. El comienzo del cuerpo de la función createStack.
  6. Cree una instancia del tipo de datos mystack y asígnele el nombre ms.
  7. Utilice el ciclo while y la función vacía () para comprobar si la pila está vacía.
  8. El inicio del cuerpo del bucle while.
  9. Utilice la función top () almacenada en la parte superior de la pila. El carácter \ t creará una nueva pestaña.
  10. Utilice la función pop () para eliminar el elemento en la parte superior de la pila.
  11. Fin del cuerpo del bucle while.
  12. Imprima una línea en blanco en la consola.
  13. Fin del cuerpo de la función createStack.
  14. Llame a la función main (). La lógica del programa debe agregarse dentro del cuerpo de la función main ().
  15. El inicio del cuerpo de la función main ().
  16. Crea un objeto de pila st.
  17. Utilice la función push () para insertar el elemento 32 en la pila.
  18. Utilice la función push () para insertar el elemento 21 en la pila.
  19. Utilice la función push () para insertar el elemento 39 en la pila.
  20. Utilice la función push () para insertar el elemento 89 en la pila.
  21. Utilice la función push () para insertar el elemento 25 en la pila.
  22. Imprime algo de texto en la consola.
  23. Llame a la función createStack para ejecutar las operaciones de inserción anteriores en la pila.
  24. Imprima el tamaño de la pila en la consola junto con otro texto.
  25. Imprima el elemento en la parte superior de la pila en la consola.
  26. Imprime algo de texto en la consola.
  27. Elimina el elemento en la parte superior de la pila. Luego devolverá los elementos restantes en la pila.
  28. Llame a la función createStack para ejecutar las operaciones anteriores.
  29. El programa debe devolver valor una vez completado con éxito.
  30. Fin del cuerpo de la función main ().

emplace () y swap ()

Estas son otras funciones de pila incorporadas:

  • emplace (): construye y luego inserta un nuevo elemento en la parte superior de la pila.
  • swap (): intercambia el contenido de la pila con el contenido de otra pila.

Ejemplo 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();}}

Producción:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de la pila en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado cstdlib en nuestro código para usar sus funciones.
  4. Incluya el espacio de nombres std en nuestro código para usar sus clases sin llamarlo.
  5. Llame a la función main (). La lógica del programa se agregará dentro del cuerpo de esta función.
  6. Declare una pila llamada st1 para almacenar valores enteros.
  7. Declare una pila llamada st2 para almacenar valores enteros.
  8. Utilice la función emplace () para insertar el entero 12 en la pila denominada st1.
  9. Utilice la función emplace () para insertar el entero 19 en la pila denominada st1.
  10. Utilice la función emplace () para insertar el entero 20 en la pila denominada st2.
  11. Utilice la función emplace () para insertar el entero 23 en la pila denominada st2.
  12. Utilice la función swap () para intercambiar el contenido de las dos pilas, st1 y st2. El contenido de la pila st1 debe moverse a la pila st2. El contenido de la pila st2 debe moverse a la pila st1.
  13. Imprime algo de texto en la consola.
  14. Use la instrucción while y la función empty () para verificar si la pila st1 no está vacía.
  15. Imprima el contenido de la pila st1 en la consola. El "" agrega espacio entre los elementos de la pila cuando los imprime en la consola.
  16. Ejecute la función pop () en la pila st1 para eliminar el elemento superior.
  17. Fin del cuerpo de la declaración while.
  18. Imprime algo de texto en la consola. El endl es una palabra clave de C ++ para la línea final. Mueve el cursor del mouse a la siguiente línea para comenzar a imprimir desde allí.
  19. Use la instrucción while y la función empty () para verificar si la pila st2 no está vacía.
  20. Imprima el contenido de la pila st2 en la consola. El "" agrega espacio entre los elementos de la pila cuando los imprime en la consola.
  21. Ejecute la función pop () en la pila st2 para eliminar el elemento superior.
  22. Fin del cuerpo de la declaración while.
  23. Fin del cuerpo de la función main ().

Apilar en STL

La STL (biblioteca de plantillas estándar) viene con clases de plantillas que proporcionan estructuras de datos comunes de C ++. Por lo tanto, también se puede implementar una pila en STL. Simplemente incluimos esta biblioteca en nuestro código y la usamos para definir una pila.

stack st;

La sintaxis anterior declara una pila st a elementos de tipo de datos T.

Ejemplo 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();}

Producción:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de la pila en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado cstdlib en nuestro código para usar sus funciones.
  4. Incluya el espacio de nombres std en nuestro código para usar sus clases sin llamarlo.
  5. Llame a la función main (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
  6. Declare una pila st para almacenar datos enteros.
  7. Agregue el elemento 12 a la pila.
  8. Agregue el elemento 19 a la pila.
  9. Agregue el elemento 20 a la pila.
  10. Imprima el elemento en la parte superior de la pila en la consola.
  11. Imprima el tamaño de la pila en la consola.
  12. Fin del cuerpo de la función main ().

Resumen:

  • Una pila es una estructura de datos que funciona según la técnica LIFO (Last In First Out).
  • El std :: stack solo permite agregar y eliminar elementos de un extremo.
  • La clase std :: stack es un adaptador de contenedor, que contiene elementos de un tipo de datos similar.
  • Se puede crear una pila a partir de varios contenedores de secuencia.
  • Si no proporciona un contenedor, el contenedor deque se utilizará de forma predeterminada.
  • La función push () es para insertar elementos en la pila.
  • La función pop () sirve para eliminar el elemento superior del paso.
  • La función empty () sirve para comprobar si una pila está vacía o no.