# Pilas (Stack)

Presentación con los problemas y explicación de pilas.

{% file src="https://1255983549-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LKPU2wzMxBOvFQpzlkK%2F-LTnOu4COhhLl3_qg4aX%2F-LTnPDJxxSPogo_c07Br%2FUntitled%20%236.pdf?alt=media&token=25adea50-a6eb-4720-ba61-efeb62fd4afb" %}
Presentación PILA
{% endfile %}

Códigos de los problemas resueltos en clase.

Problema 1: (Easy Stack)

```
// compile & run:     g++ main.cpp -o main && ./main < input.txt > out.txt

#include <cstdio>
#include <iostream>
#include <stack>

using namespace std;

int main() {

    stack<int> pila;

    int num_operaciones;
    cin>>num_operaciones;

    for (int i=0; i<num_operaciones; i++) {
        int tipo_operacion;
        cin>>tipo_operacion;
        
        if (tipo_operacion == 1) { // PUSH METER A LA PILA
            int elemento;
            cin>>elemento;
            pila.push(elemento);
        } else if (tipo_operacion == 2) { /// POP ELIMINAR DE LA PILA
            if (!pila.empty()) {
                pila.pop();
            }
        } else { // TOP IMPRIMIR
            if (pila.empty()) {
                cout<<"Empty!"<<endl;
            } else {
                int ultimo_elemento = pila.top();
                cout<< ultimo_elemento <<endl;
            }
        }
    }

    return (0);
}

```

Problema 2: (Reverse String):

```
// compile & run:     g++ main.cpp -o main && ./main < input.txt > out.txt

#include <cstdio>
#include <iostream>
#include <stack>

using namespace std;

int main() {

    string palabra;
    stack<char> pila;

    cin>>palabra;

    for (int i = 0; i<palabra.size(); i++) {
        pila.push(palabra[i]);
    }

    while(!pila.empty()) {
        cout<< pila.top() ;
        pila.pop();
    }
    cout<<endl;

    return (0);
}

```

