#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
//Angy Lizeth Pabon Villar & Sonia Alejandra Morales Ardila
// ESTRUCTURA Y BASES DE DATOS GRUPO 1
// Codigo "Cola Circular con estrura"
// Codigo de estructura de un nodo de la cola circular
//Los nodos están compuestos por un espacio para un dato y una señal para el dato
siguiente
//las colas se componen de nodos y cuando uno de los nodos marca null
//es por que la cola esta llena o llegó a la posicion final.
struct nodo
{
int nro;
struct nodo *sgte;
};
//Código de Estructura principal de la cola
struct cola
{
nodo *cabeza;
nodo *cola ;
};
//Código Insertar
void insertar( struct cola &q, int valor )
{
struct nodo *aux = new(struct nodo);
aux->nro = valor;
aux->sgte = NULL;
if( [Link] == NULL)
[Link] = aux;
else
([Link])->sgte = aux;
[Link] = aux;
}
//Código Eliminar
int eliminar( struct cola &q )
{
int num ;
struct nodo *aux ;
aux = [Link];
num = aux->nro;
[Link] = ([Link])->sgte;
delete(aux);
return num;
}
//Código Visualizar Cola
void muestraCola( struct cola q )
{
struct nodo *aux;
aux = [Link];
while( aux != NULL ){
cout<<" "<< aux->nro ;
aux = aux->sgte;
}
}
//Código Vaciar la Cola
void vaciaCola( struct cola &q)
{
struct nodo *aux;
while( [Link] != NULL){
aux = [Link];
[Link] = aux->sgte;
delete(aux);
}
[Link] = NULL;
[Link] = NULL;
}
// Código del Menu
void menu()
{
printf("\n MENU \n");
printf("\n 1. INSERTAR \n");
printf("\n 2. ELIMINAR \n");
printf("\n 3. MOSTRAR COLA \n");
printf("\n 4. VACIAR COLA \n");
printf("\n 5. SALIR \n");
printf("\n INGRESE OPCION: ");
//Funcion Principal
//la función principal se modificó para agregar la estructura y que funcionara
correctamente.
int main()
{
struct cola q;
[Link] = NULL;
[Link] = NULL;
int dato;
int op;
int x ;
system("color 0A"); //Cambio de color de el menú
do
{
menu(); cin>> op;
switch(op)
{
case 1:
printf("\n NUMERO A INSERTAR: ");
scanf("%d", &dato);
insertar( q, dato );
printf("\n\n\t\tNumero %d insertado...\n\n", dato);
break;
case 2:
x = eliminar(q);
printf("\n\n\t\tNumero %x eliminado...\n\n", x);
break;
case 3:
printf("\n\n MOSTRANDO COLA\n\n");
if([Link]!=NULL) muestraCola( q );
else printf("\n\n\tCola vacia...!");
break;
case 4:
vaciaCola( q );
printf("\n\n\t\t Vacio \n\n");
break;
}
system("pause"); system("cls");
}while(op!=5);
return 0;
}