Esta es la implementación de una pila en su forma más básica: utilizando arreglos y funciones; un simple arreglo de enteros con 10 elementos y unas cuantas funciones que describen en su manera más sencilla el funcionamiento de una pila.
#include <iostream> #define N 10 using namespace std; int V[N], tope = -1; bool llena() { return tope == N-1; } bool vacia() { return tope == -1; } void insertar(int dato) { if (!llena()) { // No podemos colocar un elemento a una pila llena. tope++; V[tope] = dato; } } int extraer() { if (!vacia()) { int aux = V[tope]; tope--; return aux; //Una forma mas elegante era colocar: return V[tope--]; } else return -9999; //Si la pila esta vacia, retornamos un valor bandera... } int main() { insertar(3); insertar(9); insertar(4); cout << extraer() << endl; //Muestra 4 cout << extraer() << endl; //Muestra 9 cout << extraer() << endl; //Muestra 3 }
Consideraciones respecto a este código:
- Tope y cima: dos variables que dan lugar a confusiones. Aquí estamos utilizando como variable que demarca el último elemento en la pila como tope, como también podíamos haberlo denominado cima, en realidad esto no importa, solamente nos interesa tener una variable que nos muestre cuál es el último elemento en la pila :-)
- Los arreglos en C++ comienzan con el índice 0, por esta razón el valor de la variable tope tiene inicialmente el valor de -1. Esto significa que inicialmente no existe ningún elemento en la pila. Así cuando coloquemos el primer elemento, el valor de tope será 0.