#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
struct colanodo{
char miembro;
struct colanodo *sig;
};
typedef colanodo COLA;
typedef COLA *COLAPTR;
void menu();
int nohaycola(COLAPTR);
void escribelacola(COLAPTR);
void encolar(COLAPTR *, COLAPTR *, char);
char descolar(COLAPTR *, COLAPTR *);
main(){
COLAPTR principio = NULL;
COLAPTR final = NULL;
int opcion;
char item;
do{
menu();
printf("\n\n\n\tSelecciona una opcion: ");
scanf("%d", &opcion);
switch(opcion){
case 1:
fflush(stdin);
system("cls");
printf("\n\n\tDame el nombre del miembro: ");
scanf("%c", &item);
encolar(&principio, &final, item); //enqueue
break;
case 2:
if(principio == NULL && final == NULL){
system("cls");
printf("\n\n\n\n\n\n\t\tNo se puede extraer nada, tienes la cola vacia?!");
getche();
}
else{
printf("\n\t %c salio de la cola", descolar(&principio, &final));
getche();
}
break;
case 3:
system("cls");
escribelacola(principio);
break;
case 4:
system("exit");
break;
}
}while(opcion!=4);
}
char descolar(COLAPTR *adelante, COLAPTR *atras){
COLAPTR aux;
char salemiembro;
if(*adelante == *atras){
aux = *adelante;
salemiembro = aux -> miembro;
*adelante = NULL;
*atras = NULL;
free(aux);
}
else{
aux = *adelante;
salemiembro = aux -> miembro;
(*adelante) = aux -> sig;
free(aux);
}
return (salemiembro);
}
void encolar(COLAPTR *adelante, COLAPTR *atras, char valor){
COLAPTR aux = (COLAPTR) malloc(sizeof(COLA));
aux->sig = NULL;
aux->miembro = valor;
if (nohaycola(*adelante)){
*adelante = aux;
*atras = aux;
}
else{
(*atras) -> sig = aux;
*atras = aux;
}
}
void menu(){
system("cls");
printf("\n\n\t\t***OPERACIONES DE LA COLA***");
printf("\n\t\t1)Insertar un miembro en la cola.");
printf("\n\t\t2)Sacar un miembro de la cola.");
printf("\n\t\t3)Imprimir la cola.");
printf("\n\t\t4)Salir.");
}
int nohaycola(COLAPTR aux){
return aux == NULL;
}
void escribelacola(COLAPTR aux){
if(nohaycola(aux)){
printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\tNO HAY COLA!!!!!!");
getche();
}
else{
printf("\n\n\n\t\t***La COLA esta asi***\n\n");
printf("\nINICIO DE LA COLA -> ");
while(aux != NULL){
printf("%c -> ", aux -> miembro);
aux = aux -> sig;
}
printf(" FIN DE LA COLA.");
getche();
}
}
No hay comentarios:
Publicar un comentario