Volver a la página principal
viernes 4 octubre 2024
9

Cómo usar pilas en en C++

std::stack es un contenedor adaptador en C++ que proporciona una estructura de datos tipo pila (stack), permitiendo insertar y eliminar elementos en un orden LIFO (Last In, First Out). Es útil cuando se necesita gestionar datos de manera que el último en entrar sea el primero en salir, como en algoritmos de recorrido de árboles o control de llamadas.

¿Cómo funciona std::stack?

El contenedor std::stack se implementa como un adaptador sobre otros contenedores como std::vector, std::deque o std::list. Esto significa que std::stack se construye usando uno de estos contenedores subyacentes, pero expone solo un subconjunto de sus operaciones para permitir el comportamiento LIFO. Los métodos principales son:

  • push(): Añade un nuevo elemento a la parte superior de la pila.
  • pop(): Elimina el elemento superior de la pila.
  • top(): Devuelve una referencia al elemento superior sin eliminarlo.
  • empty(): Verifica si la pila está vacía.
  • size(): Devuelve el número de elementos en la pila.

Ejemplos de uso de std::stack en C++

#include <iostream>
#include <stack>

int main() {
    std::stack<int> pila;

    // Insertar elementos en la pila
    pila.push(10);
    pila.push(20);
    pila.push(30);

    std::cout << "Elemento superior: " << pila.top() << std::endl; // Output: 30

    // Eliminar el elemento superior
    pila.pop();
    std::cout << "Elemento superior después de pop(): " << pila.top() << std::endl; // Output: 20

    // Verificar el tamaño de la pila
    std::cout << "Tamaño de la pila: " << pila.size() << std::endl; // Output: 2

    return 0;
}

Ejemplos adicionales

1. Uso con tipos de datos personalizados:

std::stack no se limita a tipos de datos primitivos, también se puede usar con clases o estructuras definidas por el usuario, facilitando su uso en aplicaciones más complejas.

2. Recorrido inverso de un contenedor:

Se puede usar std::stack para almacenar temporalmente elementos de otro contenedor, como std::vector, y luego extraerlos en orden inverso.

Referencia oficial

Para más detalles sobre std::stack, puedes consultar la documentación oficial en cppreference.

Etiquetas:
cpp
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer