jueves, 7 de octubre de 2010

TDA COLA

Una COLA es una estructuras de datos  caracterizada por ser una secuencia de
 elementos en la que la operación de inserción se realiza por un extremo y la operación
 de extracción por el otro. También se le llama estructura FIFO ( primer elemento en
entrar será también el primero en salir).

 OPERACIONES BASICAS 


*Crear: se crea la cola vacía. 
*Encolar (añadir elemento): se añade un elemento a la cola.
Dejando claro que seañade al final.
*Desencolar (Eliminar elemento): se elimina el primer elemento que entro en la cola. 
*Frente (consultar): se devuelve el primer elemento que entro en la cola.

INICIALIZADORAS

Nombre: Inicializar.
Funcion: Inicializar la estructura.
pre: nada
post: c= { }.

CREADORAS

Nombre: Encolar
Funcion: Insertar un elemento en la cola.
pre: C={ },e

        C={e1,e2,e3...en}e
post: C= {e}
        
C={e1,e2,e3...en+1}
 

Nombre: Desencolar
Funcion: Elimina elementos de la cola.
pre: C= { }
       C= {e1,e2,e3......e n}

post: Cola vacia.
        C= {e1,e2,e3......e n -1}

ANALIZADORAS

Nombre: Consultar
Funcion: Retorna el primer elemento.
pre: C= { }
       C= {e1,e2,e3.....e n}

post: Cola vacia.
        C= e1.

Nombre: Recorrer cola
Funcion: Devuelve los elementos de la cola.
pre: C= { }, e
      C= {e1,e2,e3.....e n},e

post: Cola vacia
        Elemento encontrado.
      
C={e1,e2,e3...en}
 

SEUDOCODIGO



#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
// Estructura
struct nodoCola
{
    int dato;
  nodoCola *sig;
};struct nodoCola *ult;
//Menu
int menu()
{
    int op;
  clrscr();
    cout<<"\n\t\tMENU PRINCIPAL";
    cout<<"\n\n1.Inicializar cola";
    cout<<"\n2. Encolar";
    cout<<"\n3. Desencolar";
    cout<<"\n4. Recorrer";
    cout<<"\n5. Salir";
    cout<<"\n\n\t\t--> Elija Opcion:  ";
    cin>>op;
    return op;
}
//Definicion de funciones
 void inicializar(struct nodoCola **, struct nodoCola **);
 void desencolar(struct nodoCola **,struct nodoCola **);
 void recorrer(struct nodoCola **, struct nodoCola **,int x);
 void encolar(struct nodoCola **, struct nodoCola **);

 //Funcion inicializar
 void inicializar(struct nodoCola **prim,struct nodoCola **ult)
 { clrscr();
  *prim=NULL;
  cout<<"\nCola Inicializada.";
  getch();
 }
//Funcion Encolar
 void encolar(struct nodoCola **prim, struct nodoCola **ult,int dat)
 {
  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
  { (*ult)->sig=aux;
  *ult= aux;
  }
  getch();
 }
//Funcion Desencolar
 void desencolar(struct nodoCola **prim, struct nodoCola **ult)
 { clrscr();
  struct nodoCola  *aux;
  if(*prim==NULL)
    cout<<"COLA Vacia";
  else
   {
    aux=*prim;
    cout<<"Elemento eliminado: "<<(*prim)->dato;
    *prim=aux->sig;
    delete aux;
   }
 getch();
 }
 //Funcion recorrer
 void recorrer(struct nodoCola **prim, struct nodoCola **ult,int dato)
 {clrscr();
  struct nodoCola  *aux;
  if(*prim==NULL)
    cout<<"\nCOLA Vacia. ";
  else
  {
    aux=*prim;
    while(aux!=NULL)
    {
    cout<<"Elemento: "<<aux->dato<<"\n";
    aux=aux->sig;
    }
  }
  getch();
}




// 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:{desencolar(&prim, &ult);break;}
     case 4: {recorrer(&prim, &ult,dat);break;}

     }
    }
    while(opc!=5);
    return 0;
}