viernes, 13 de enero de 2012

Ejercicio_Cola_Codigo

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
struct colanodo {
  char nombre;
  struct colanodo *sig;
  };
typedef struct colanodo COLA;
typedef COLA *COLAPTR;
void enqueue (COLAPTR *, COLAPTR *, char);
int nohaycola (COLAPTR);
void escribecola (COLAPTR);
void menu(void);
void imprimecola (COLAPTR);
void enqueue (COLAPTR *, COLAPTR *, char);
char dequeue(COLAPTR *);
main ()
  {
  COLAPTR principio=NULL, final=NULL;
  int opcion;
  char item;
 
  menu();
  printf("\n\n Elige una opcion: ");
  fflush(stdin);
        scanf  ("%d", &opcion);
  while (opcion!=4)
  {
   switch (opcion)
   { case 1: printf  ("\n Ingresar el caracter del nodo: ");
       fflush(stdin);
                      scanf   ("%c", &item);
       enqueue (&principio, &final, item);
       escribecola (principio);
       printf("\n\n                Enter para regresar...");
                      getch();
                      menu();
             printf ("\n\n Elige una opcion :");
                      scanf  ("%d", &opcion);
                      break;
     case 2: printf ("\n\n Eliminar un elemento de la cola");
             fflush(stdin);
             dequeue (&principio);
              case 3: printf ("\n\n La cola es: ");
             fflush(stdin);
       imprimecola (principio);
       printf("\n\n                Enter para regresar...");
                      getch();
                      menu();
             printf ("\n\n Elige una opcion :");
                      scanf  ("%d", &opcion);
       break;
     default:printf ("\n\nOpcion NO valida");
             printf ("\n\nEnter para continuar");
              getch();
     system ("cls");
              menu();
             printf ("\n\n Elige una opcion :");
                      fflush(stdin);
                      scanf  ("%d", &opcion);
   }
         }
         }  
void menu(void) {
     system("cls");
     printf("\n\n Operaciones disponibles con la Cola");
     printf("\n\n 1.- Agregar un elemento a la cola");
     printf("\n\n 2.- Eliminar un elemento de la cola");
     printf("\n\n 3.- Imprime la cola");
     printf("\n\n 4.- Fin");
     };

void enqueue (COLAPTR *adela, COLAPTR *atras, char valor)
     {
             COLAPTR aux=(COLAPTR)malloc(sizeof(COLA));
    aux->sig=NULL;
    aux->nombre=valor;
   
             if (nohaycola(*adela))
    {*adela=aux;
        *atras=aux;}
              else
     {
      (*atras)->sig=aux;
       *atras=aux;
     }
  }   
int nohaycola (COLAPTR aux)
 {
  return aux==NULL;
 }
void escribecola (COLAPTR aux)
     {
    if (nohaycola(aux))
  printf("\n\nNo hay cola");
  else { printf ("\n\n La cola tiene... ");
      printf ("\n Principio --> ");
      while (aux!=NULL)
      {printf("%c <-- ", aux->nombre);
      aux=aux->sig;
      }
      printf("Final de la cola");
    }
     }
    
void imprimecola (COLAPTR aux)
     {
    if (nohaycola(aux))
  printf("   No hay cola");
  else { printf ("\n Principio --> ");
      while (aux!=NULL)
      {printf("%c <-- ", aux->nombre);
      aux=aux->sig;
      }
             printf("Final de la cola");
             }
     }
    
char dequeue(COLAPTR *adela)
{
   COLAPTR aux; char sale;
            aux=*adela;
            sale=aux->nombre;
            *adela=aux->sig;
            free(aux);
    return (sale);
 }

No hay comentarios:

Publicar un comentario