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 del switch

    } 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

 

Hosted by www.Geocities.ws

1