lunes, 20 de septiembre de 2010

REPRESENTACION Y EJEMPLO TDA COLA

REPRESENTACIONES

C = Cola
C = {}  Cola vacía
C={e1,e2,e3...en} Cola con n elementos
e es un elemento de la cola
e1 es el primer elemento
e2 es el segundo elemento
en es el ultimo elemento

ENCOLAR
Nombre: Encolar
Descripción: Permite insertar datos en la cola
Precondición:    C = {  }, e
                                C = {e1,e2 ,e3,…},e

Postcondición:  Escribir Cola Vacia
                                C = {e1,e2 ,e3,…en +1}

SEUDOCÓDIGO
Encolar(struct nodoCola **prim int dat, struct nodoCola **ult)
Struct nodoCola *aux, *punt;
aux=new nodoCola;
si (aux=NULL)
escribir “Cola Vacia”
fin si
 aux ->dato=dat
 aux ->sig=NULL
si *prim=NULL
*prim=aux
*ult=aux
Sino
utl->sig=aux
ult=ult
Fin si

DESENCOLAR
Nombre: Desencolar
Descripción: Elimina elementos de la cola
Precondición:    C = {  }, e
                                C = {e1,e2 ,e3,…},e

Postcondición:  Escribir Cola Vacia
                                C = {e1,e2 ,e3,…en  -1}

SEUDOCÓDIGO
Desencolar(struct nodoCola **prim int dat, struct nodoCola **ult)
Struct nodoCola *aux;
si (aux=NULL)
escribir “Cola Vacia”
Sino
Escribir Elemento eliminado *prim->dato
Aux=*prim
*prim=aux->sig
Delete=aux
  Si (*prim=NULL)
  Ult = NULL
  Fin si
Fin si

PROGRAMA PRINCIPAL 
 
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
//Definicion de la Estructura
struct nodoCola
{
 int dato;
   nodoCola *sig;};
//Menu principal
int menu()
{
 int opc;
   clrscr();
   cout<<"       MENU PRINCIPAL";
   cout<<"\n1. Inicializar Cola";
   cout<<"\n2. Encolar (push)";
   cout<<"\n3. Recorrer Cola";
   cout<<"\n4. Desencolar (pop)";
   cout<<"\n5. Invertir Cola";
   cout<<"\n6. Verificar Cola Vacia";
   cout<<"\n7. Destruir Cola";
   cout<<"\n8. Salir";
   cout<<"\nOpcion: ";
   cin>>opc;
   return opc;
}
//Definicion de funciones
 void inicializar(struct nodoCola **, struct nodoCola **);
   void desencolar(struct nodoCola **, struct nodoCola **);
   void recorrer(struct nodoCola **, struct nodoCola **);
   void encolar(struct nodoCola **, struct nodoCola **, int x);
   void invertir(struct nodoCola **, struct nodoCola **);
   void verificar(struct nodoCola **, struct nodoCola **);
   void destruir(struct nodoCola **, struct nodoCola **);
//Funcion recorrer
 void recorrer(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
     struct nodoCola *aux;
     if(*prim==NULL)
      cout<<"\nCola Vacia. ";
     else
     {
       aux=*ult;
         while(aux!=NULL)
         {
          cout<<"Elemento: "<<aux->dato<<"\n";
            aux=aux->sig;
         }
     }
    getch();
 }
//Funcion inicializar
 void inicializar(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
     *prim=NULL;
     *ult=NULL;
     cout<<"\nCola Inicializada.";
     getch();
   }
//Funcion encolar
 void encolar(struct nodoCola **prim, struct nodoCola **ult, int dat)
   {  clrscr();
    struct nodoCola *aux;
     aux=new nodoCola;
     if(aux==NULL)
      {
   cout<<"\nMemoria Insuficiente. ";
         getch();
      }
     aux->dato=dat;
     aux->sig=NULL;
  if(*prim==NULL)
      { *prim=aux;
       *ult=aux;
      }
      else
      { aux->sig=*ult;
       *ult=aux;
      }
   }
//Funcion desencolar
 void desencolar(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
   //int v;
     struct nodoCola *aux;
     if(*prim==NULL)
      cout<<"Cola Vacia";
     else
      {
   aux=*prim;
         cout<<"Elemento eliminado: "<<(*prim)->dato;
   *prim=aux->sig;
         //v=aux->dato;
      delete aux;
      }
      if(*prim==NULL)
       *ult=NULL;
 getch();
   }
//Funcion invertir
 void invertir(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
     struct nodoCola *aux;
      int inv;
     if(*prim==NULL)
      cout<<"\nCola Vacia. ";
     else
     {
       inv=(*prim)->dato;
         (*prim)->dato=(*ult)->dato;
         (*ult)->dato=inv;
     }
     getch();
        }
//Funcion verificar
 void verificar(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
     struct nodoCola *aux;
     if(*prim==NULL)
      cout<<"\nCola Vacia. ";
     else
     {
        cout<<"La Cola esta con Elementos ";
     }
    getch();
 }
   //Funcion destruir
 void destruir(struct nodoCola **prim, struct nodoCola **ult)
   { clrscr();
      struct nodoCola *aux;
     if(*prim==NULL)
      {
      cout<<"Cola Vacia";
      }
     else
      {
       do
       {
         aux=*prim;
         *prim=(*prim)->sig;
       }
         while (*prim!=NULL);
         if (*prim==NULL)
         *ult=NULL;
         cout<<"Cola Destruida";
       }
 getch();
   }

//Cuerpo principal
 int main()
  {
    struct nodoCola *prim, *ult;
     int dat,opc;
     do
      {
       opc=menu();
         switch(opc)
         {
          case 1:{inicializar(&prim, &ult);break;}
            case 2:{
                    cout<<"\nEntre el dato: ";
                    cin>>dat;
                    encolar(&prim, &ult, dat);
                    break;
                   }
            case 3:{recorrer(&prim, &ult);break;}
            case 4:{desencolar(&prim, &ult);break;}
            case 5:{invertir(&prim, &ult);recorrer(&prim, &ult);break;}
            case 6:{verificar(&prim, &ult);break;}
            case 7:{destruir(&prim, &ult);break;}
        }
     }while(opc!=8);
  return 0;
 }

No hay comentarios:

Publicar un comentario