PROGRAMA EJEMPLO PARA MANEJO DE PILAS:
#include
<cstdlib>
#include
<iostream>
#include
<iomanip>
using
namespace std;
#include
"pilas.h"
int main(int argc, char *argv[])
{
int opc;
pilas pila;
do
{
// Menu de opciones disponibles
cout<<"*** OPCIONES DISPONIBLES ***\n"<<endl;
cout<<"1. Push"<<endl;
cout<<"2. Pop"<<endl;
cout<<"3. Ver
tope"<<endl;
cout<<"4. Terminar"<<endl;
cout<<"digite su opcion: ";
//Lectura de la opcion elegida por el usuario
do {
cin>>opc;
} while (opc<1
||opc>4);
switch(opc)
{
case 1:
{
int
valor;
//Leer el dato a insertar
cout<<"Digite un valor: "; cin>>valor;
//Se invoca el metodo insertar
pila.push(valor);
break;
}
case 2:
{
int vr;
vr = pila.pop();
if (vr != 0)
cout<<"El dato de la cima es: "<<vr<<" valor: "<<vr<<endl;
break;
}
case 3:
{
pila.consultarTope();
break;
}
} // Fin
} while (opc <=3);
cout<<"\nPrograma terminado...
"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
} // Fin del programa principal
El siguiente código implementa la clase pilas, se guarda en el mismo directorio con el nombre de la clase y la extenión .h (pilas.h)
// Implementacion de la clase pilas
#ifndef PILA_H
#define PILA_H
class pilas
{
/* Se define la estructura del nodo de la lista,
en este caso se guardaran datos de tipo entero.
*/
struct nodo {
int dato;
nodo *siguiente;
};
// Definicion de variables para controlar la pila
nodo *pila, *Aux;
/* pila es puntero que apunta al tope de la pila
Aux es una variable auxiliar para recorrer la pila
*/
public:
pilas(); // Constructor
void push(int
valor);
void consultarTope();
int pop();
~pilas(); // Destructor
}; //Finaliza la definicion de la clase...
#endif
// Se implementan los metodos
// Constructor
pilas::pilas()
{
pila = NULL;
}
//Metodo para insertar un nodo en la pila (se inserta despues del ultimo)
void pilas::push(int valor)
{
//Se crea un nuevo nodo usando la variable auxiliar
cout<<"Se va a crear el nodo..."<<endl;
Aux = new nodo;
if (Aux==NULL) // Se verifica si hay memoria disponible
{
cout<<"No hay memoria suficiente para crear mas nodos...";
system("PAUSE");
}
// Se copian los datos leidos en el nodo de la pila
Aux->dato = valor;
if (pila == NULL)
Aux->siguiente = NULL;
else
Aux->siguiente = pila;
pila = Aux;
} // Fin del metodo Inertar
// Metodo para consultar el dato de la cima
void pilas::consultarTope()
{
if (pila==NULL)
cout<<"La pila esta vacia..."<<endl;
else
cout<<"El ultimo dato es: "<<pila->dato<<endl;
system("PAUSE");
}
int pilas::pop()
{
if (pila==NULL)
{
cout<<"La pila esta vacia..."<<endl;
return 0;
}
else
return pila->dato;
} // Final del metodo mostrar dato de la cima
//Destructor
pilas::~pilas()
{
Aux = pila;
cout<<"\nse va a eliminar la pila de la memoria..."<<endl;
while(Aux!=NULL)
{
//Se imprime el contenido de cada nodo (campo nomb)
delete Aux;
Aux = Aux->siguiente;
}
delete pila;
cout<<"...la pila se elimino de la memoria RAM..."<<endl<<endl;
} // fin de la implementacion de la clase pilas