jueves, 14 de octubre de 2010

EJERCICIO EN CLASE


#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. Invertir Contenidos";
    cout<<"\n6. Verificar Estado de la Cola";
    cout<<"\n7. Detruir Cola";
    cout<<"\n8. 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 **);
 void verificar(struct nodoCola**,struct nodoCola **);
 void destruir(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();
}
// Inverttir Contenidos


void invertir(struct nodoCola **prim, struct nodoCola **ult)
{
   int dat;
    if(*prim==NULL)
    cout<<"COLA Vacia";
    else
    {
      cout<<"\n\n\nPrimer dato ingresado : "<<(*prim)->dato<<"\t";
      cout<<"Ultimo dato ingresado: "<<(*ult)->dato<<"\n";
     dat=(*ult)->dato;
     (*ult)->dato=(*prim)->dato;
      (*prim)->dato=dat;
      cout<<"\n\n\n\t\t ***LOS DATOS INVERTIDOS SON***:    ";
      cout<<"\n\nPrimer dato ingresado: "<<(*prim)->dato<<"\t";
      cout<<"\tUltimo dato ingresado: "<<(*ult)->dato<<"\n";
    }
    getch();
}


//Funcion Verificar stado de la Cola
void verificar(struct nodoCola **prim,struct nodoCola **ult)
 { clrscr();
  struct nodoCola  *aux;
  if(*prim==NULL)
    cout<<"\n\tCola Vacia";
  else
   { cout<<"\n\tLa Cola Contiene Elementos ";
    }
 getch();
 }

//Funcion Destruir toda la Cola

void destruir(struct nodoCola **prim, struct nodoCola **ult)
 {
     struct nodoCola  *aux;
     if(*ult==NULL)
     cout<<"\n\tCola Vacia. ";
     else
     do
     { aux=*prim;
       *prim=(*prim)->sig;
       delete aux;
     }
     while (*prim!=NULL);
  cout<<"\n\tLa Cola esta Destruida";
  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;}
            case 5:{invertir(&prim, &ult);break;}
            case 6:{verificar(&prim, &ult);break;}
            case 7:{destruir(&prim, &ult);break;}
     }
    }
    while(opc!=8);
    return 0;
}