Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Apilar en C++ STL con ejemplo

¿Qué es estándar::pila?

Una pila es una estructura de datos que opera en base a la técnica LIFO (Last In First Out). El std::stack permite agregar y eliminar elementos de un solo extremo.

La clase std::stack es un adaptador de contenedor. Los objetos contenedores 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, se usará deque container de forma predeterminada. Los adaptadores de contenedores no admiten iteradores, por lo que no se pueden usar para manipular datos.

En este tutorial de C++, aprenderá

Sintaxis de 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 Type, class Container = deque<Type> > class stack;

Tipos de miembros

Estos son los tipos de miembros de la pila:

Operaciones en Pila

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

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 empujado el elemento 5 a la pila. La parte superior de la pila apuntará al elemento 5.

Paso 3) A continuación, hemos empujado el elemento 50 a 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 extrae 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. Esta es la sintaxis de la función:

stack.pop()

La función no toma parámetros.

Ejemplo 1:

#include <iostream> 
#include <stack> 
using namespace std;
int main() {
	stack<int> 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();
	}
}

Salida:

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

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de pila en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
  4. Llama 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. Use 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 la función de vacío() 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. Llama a la función pop() en la pila.
  15. Fin del cuerpo del ciclo while.
  16. Fin del cuerpo de la función main().

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

Las pilas tienen funciones integradas que puedes usar para jugar con la pila y sus valores. Estos incluyen:

Ejemplo 2:

#include <iostream> 
#include <stack>  
using namespace std;
void createStack(stack <int> mystack)
{
	stack <int> ms = mystack;
	while (!ms.empty())
	{
		cout << '\t' << ms.top();
		ms.pop();
	}
	cout << '\n';
}
int main()
{
	stack <int> 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;
}

Salida:

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

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de pila en nuestro código para usar sus funciones.
  3. Incluya el espacio de nombres estándar en nuestro programa para 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 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 bucle while y la función empty() para comprobar si la pila está vacía.
  8. El comienzo del cuerpo del ciclo 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. Use la función pop() para eliminar el elemento en la parte superior de la pila.
  11. Fin del cuerpo del ciclo while.
  12. Imprime una línea en blanco en la consola.
  13. Fin del cuerpo de la función createStack.
  14. Llama a la función main(). La lógica del programa debe agregarse dentro del cuerpo de la función main().
  15. El comienzo del cuerpo de la función main().
  16. Cree 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. Llama 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. Elimine el elemento en la parte superior de la pila. Luego devolverá los elementos restantes en la pila.
  28. Llama a la función createStack para ejecutar las operaciones anteriores.
  29. El programa debe devolver valor al completarse con éxito.
  30. Fin del cuerpo de la función main().

emplazar() e intercambiar()

Estas son otras funciones de pila incorporadas:

Ejemplo 3:

#include <iostream>    
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
	stack<int> st1;
	stack<int> 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();
	}
}

Salida:

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

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de 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 estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llama 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 número entero 12 en la pila denominada st1.
  9. Utilice la función emplace() para insertar el número entero 19 en la pila denominada st1.
  10. Utilice la función emplace() para insertar el número entero 20 en la pila denominada st2.
  11. Utilice la función emplace() para insertar el número 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 se debe mover 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. Utilice 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 al imprimirlos en la consola.
  16. Ejecute la función pop() en la pila st1 para eliminar el elemento superior.
  17. Fin del cuerpo de la instrucción while.
  18. Imprime algo de texto en la consola. endl es una palabra clave de C++ para línea final. Mueve el cursor del mouse a la siguiente línea para comenzar a imprimir desde allí.
  19. Utilice 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 al imprimirlos en la consola.
  21. Ejecute la función pop() en la pila st2 para eliminar el elemento superior.
  22. Fin del cuerpo de la instrucció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 plantilla que proporcionan estructuras de datos comunes de C++. Por lo tanto, una pila también se puede implementar en STL. Simplemente incluimos esta biblioteca en nuestro código y la usamos para definir una pila.

stack<T> st; 

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

Ejemplo 3:

#include <iostream>      
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
	stack<int> st;
	st.push(12);
	st.push(19);
	st.push(20);
	cout << st.top();   
	cout << st.size();  
}

Salida:

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

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado de 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 estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llama 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:


Lenguaje C

  1. Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
  2. C++ do...while bucle con ejemplos
  3. Declaración de caso de cambio de C ++ con EJEMPLO
  4. C++ Asignación dinámica de arreglos con ejemplo
  5. Punteros de C++ con ejemplos
  6. Sobrecarga de operadores de C++ con ejemplos
  7. Estructura C++ con ejemplo
  8. Mapa en la biblioteca de plantillas estándar (STL) de C++ con ejemplo de impresión
  9. std::list en C++ con ejemplo
  10. Funciones de C++ con ejemplos de programas
  11. Diferencia entre estructura y clase:explicada con el ejemplo de C++