Código
//Pila.cpp //By Norochii //Estructura de Datos #include "StdAfx.h" #include "Pila.h" #include <iostream> using namespace std; Pila::Pila(void) //Constructor. se inicializa el tope o cima de la pila en -1 { top = -1; } Pila::~Pila(void) //Destructor. Destruye los datos de la pila { cout<<"Destruyendo datos"<<endl; } void Pila::EmptyStack() //Verifica si la pila esta vacia, { //viendo si el tope esta en -1 top = -1; } void Pila::AddStack(int elemento) //Verifica si la Pila esta llena { if(FullStack()) //Si la pila esta llena emite el mensaje { //Desbordamiento pila cout<<"Desbordamiento pila :"; } else //Sino el apuntador o subindice se incrementa con cima++ { top++; //y se almacena un elemento en el arreglo A[cima] automaticamente A[top] = elemento; //ya que se iguala. El elemento que entro se guarda en el arreglo A[] } } void Pila::Push(int elemento) //Esta funcion coincide con la funcion AddStack() { AddStack(elemento); } int Pila::Pop() //Esta funcion extrae los elementos de la pila { int Aux; //Se crea una variable auxiliar o temporal para poder guardar if(top == -1) //dentro de la variable Aux el ultimo elemento en entrar { cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl; } else { Aux = A[top]; //Aqui se guarda el elemento del tope osea el ultimo elemento en entrar top--; //se decrementa el tope y apunta al siguiente elemento y asi sucecivamente hasta que quede en -1 } return Aux; //se retorna el ultimo elemento del arreglo A[] almacenado en la variable Aux } int Pila::FirstStack() //comprueba que la pila no este vacia { if(top == -1) //Si esta vacia emite un mensaje { cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl; } else //sino se dara el elemento del arreglo A[] almacenado en la posicion apuntada por la cima { return A[top]; } } void Pila::ClearStack() //Se encarga de eliminar el ultimo elemento que entro en la pila { if(top == -1) //Primero comprueba que la pila no este vacia { //Si esta vacia emite un mensaje cout<<"Se intenta sacar un elemento de una Pila vacia"<<endl; } else //Sino se decrementa el tope en 1 { top--; } } bool Pila::FullStack() { return top == MaxTamPila-1; //En este caso la pila estara llena cuando el tope apunte al valor MaxTamPila-1 } void Pila::CuentaPila() //Esta funcion es para saber cuantos elementos hay en la pila { if(top == -1) { cout<<"Se han sacado los elementos anteriormente o aun no introduce ninguno"<<endl; } else cout<<"Elementos existentes en la pila : "<<top + 1<<" Elementos"<<endl; } void Pila::Elementos() //Una funcion que lo unico que hace es mostrar un mensaje de cuantos elementos se han introducido hasta ese momento { cout<<"Elemento "<<top +2 <<endl; }