PROGRAMA EJEMPLO PARA MANEJO DE COLAS:


Bajar el programa completo en PDF.  Se puede copiar al editor del C++, usando el icono Select tool, en la barra de herramientas del Acrobat reader.

 

El siguiente programa implementa una cola, en donde en cada no se almacena el nombre de una persona.  Esta escrito con OO.  La primera parte corresponde a la implementación de la clase, debe guardarse en un archivo con extensión .h.  La segunda parte corresponde al programa principal, debe guardarse en el mismo directorio en donde se guarde la clase.

 

// Implementacion de la clase colas

#ifndef COLA_H

#define COLA_H

class colas

{

  /* Se define la estructura del nodo de la lista,

     en este caso se guardaran datos de tipo entero.

  */

  struct nodo {

                char nomb[20];

                char apel[20];

                nodo *siguiente;

              };

  // Definicion de variables para controlar la cola

 

  nodo *Ini_cola, *Fin_cola, *Aux, *Aux1;

 

  /* Ini_cola es puntero que apunta al primer elemento de la cola

     Fin_cola es un puntero que apunta al ultimo elemento de la cola

     Aux y Aux1 son variables auxiliar para recorrer la cola

  */

 

  public:

         colas();  // Constructor

         void Insertar(char nom[20]);

         int ConsultarPosicion(char nom[20]);

         void Retirar();

         void MostrarDatos();

         ~colas();  // Destructor

};  //Finaliza la definicion de metodos...

#endif

 

// Se implementan los metodos

 

// Constructor

colas::colas()

{

  Ini_cola = NULL;

  Fin_cola = NULL;

}

 

//Metodo para insertar un nodo en la cola (se inserta despues del ultimo)

 

void colas::Insertar(char nom[20])

{

  //Se crea un nuevo nodo usando la variable auxiliar

  Aux = new nodo;

  if (Aux==NULL) // Se verifica si hay memoria disponible

  {

    cout<<"No hay memoria suficinente...para crear mas nodos...";

    system("PAUSE");

  }

  strcpy(Aux->nomb, nom);

  Aux->siguiente = NULL;

  cout<<"Se ha creado un nodo con el dato: "<<nom<<" ("<<Aux->nomb<<")"<<endl;

  // Se guarda la informacion en el campo de datos

 

  if (Ini_cola == NULL)

  {

    Ini_cola = Aux;

    cout<<"Se creo el primer nodo: "<<Ini_cola->nomb<<endl;

  }

  else

  {

    // Enlazo el nuevo nodo con el que estaba de ultimo (Fin_cola apunta al ultimo)

    Aux1 = Fin_cola;

    Aux1->siguiente = Aux;

    // El nuevo nodo ahora sera el ultimo, por lo tanto Fin_cola apunta a el.

    cout<<"\nEl nodo se inserto al final de la cola..."<<endl;

  }

  Fin_cola = Aux;

} // Fin del metodo Inertar

 

// Metodo para consultar la posicion de un nodo en la cola

int colas::ConsultarPosicion(char nom[20])

{

  int pos = 0;

  bool seguir = false; //Indica cundo se ha encontrado el dato buscado

  Aux = Ini_cola;

  cout<<"\nFavor esperar...consultado buscando informacion..."<<endl;

  // Se recorre la cola para buscar si los datos coinciden

  if (Aux!=NULL) seguir = true;

  while(seguir)

  {

     //Se compara el contenido del nodo con el dato buscado

     if((strcmp(Aux->nomb, nom)==0))

       seguir = false; // dato encontrado.

     pos++; //Incremento en uno el contador de posicion

     Aux = Aux->siguiente;  // paso al siguiente nodo

     if(Aux==NULL) seguir = false;

  }

  return pos; 

}

 

void colas::MostrarDatos()

{

  Aux = Ini_cola;

  cout<<"\nINFORMACION DE LA COLA"<<endl;

  cout<<endl<<"Primero: ";

  while(Aux!=NULL)

  {

     //Se imprime el contenido de cada nodo (campo nomb)

     cout<<Aux->nomb<<" - ";

     Aux = Aux->siguiente; 

  }

  cout<<"...y este es el ultimo en la cola!!! "<<endl<<endl;

} // Final del metodo mostrar la lista

 

//Destructor

colas::~colas()

{

  Aux = Ini_cola;

  cout<<"\nse va a eliminar la cola de la memoria..."<<endl;

  while(Aux!=NULL)

  {

     //Se imprime el contenido de cada nodo (campo nomb)

     delete Aux;

     Aux = Aux->siguiente; 

  }

  delete Ini_cola;

  delete Fin_cola;

  cout<<"...la cola se elimino de la memoria RAM..."<<endl<<endl;

 

} // Se termina la implementación de la clase colas

 

Este es el programa principal, para manejo de colas:

 

#include <cstdlib>

#include <iostream>

#include <iomanip>

 

using namespace std;

 

#include "colas.h"

 

int main(int argc, char *argv[])

{

    int opc;

    colas cola;

    do

    {

        // Menu de opciones disponibles

        cout<<"*** OPCIONES DISPONIBLES ***\n"<<endl;

        cout<<"1.  Incluir nodo"<<endl;

        cout<<"2.  Elminar un nodo"<<endl;

        cout<<"3.  Consultar posicion"<<endl;

        cout<<"4.  Listar la cola"<<endl;

        cout<<"5.  Terminar"<<endl;

        cout<<"digite su opcion: ";

        //Lectura de la opcion elegida por el usuario

        do {

             cin>>opc;

           } while (opc<1 ||opc>6);

        switch(opc)

        {

          case 1:

          {

            char nombre[20];

            char apellido[20];

            //Leer el dato a insertar

            cout<<"Digite el nombre  : "; cin>>nombre;

            //cout<<"Digite el apellido: "; cin>>apellido;

            // Se invoca el metodo insertar

            cola.Insertar(nombre);

            break;

          }  

          case 2:

          {

             //cola.Retirar();

             break;

          }  

          case 3:

          {

            case 3:

          {

                    int posicion;

                     char *nombre;

          int apellido;

          //Leer el dato a insertar

          cout<<"Digite el nombre  : "; cin>>nombre;

          cout<<"Digite el apellido: "; cin>>apellido;

          posicion = 0;

posicion = cola.ConsultarPosicion(nombre,apellido);

           if(posicion==0)

             {

                cout<<"No se encontro el dato buscado..."<<endl;

                system("PAUSE");

              }

              else

              {

                        cout<<"El dato se encontro en la poscion: "<<posicion<<endl;

                        system("PAUSE");

               }

                        break; 

          }

          case 4:

          {

            cola.MostrarDatos();

            break;

          }

        } // Fin del switch

    } while (opc <=4); 

    cout<<"\nPrograma terminado... "<<endl; 

    system("PAUSE");

    return EXIT_SUCCESS;

}  // Fin del programa principal

 

Hosted by www.Geocities.ws

1