COLAS EN C++
Es una estructura lineal de datos. Una cola es un ordenado de elementos homogéneos en el que los nuevos elementos se añaden por un extremo (el final) y se quitan por el otro extremo (el frente). En las colas el elemento que entró primero, sale también primero.
CÓDIGO DE COLAS EN C++
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<alloc.h>
struct nodo
{
int numero; // en este caso es un numero entero
struct nodo *siguiente;
};
struct cola
{
nodo *delante; //punteros que apuntan nodos de atras y adelante
nodo *atras ;
};
//Funciones con cola
void Encolar( struct cola &q, int valor );
int Desencolar( struct cola &q );
void Mostrarcola( struct cola q );
void Vaciacola( struct cola &q);
//*****************************
int main()
{
struct cola q;
q.delante = NULL;
q.atras = NULL;
int dato; // numero a encolar
int op; // opcion del menu
int x ; // numero que devuelve la funcon pop
do
{
system("cls");
printf("***MENU***\n\n");
printf("1. Encolar\n");
printf("2. Desencolar\n");
printf("3. Mostrar cola\n");
printf("4. Vaciar cols\n");
printf("5. Salir\n\n");
printf("Digite la opcion: ");
scanf("%d",&op);
switch(op)
{
case 1:
do
{
system("cls");
printf("Digite Cero (0) para salir\n");
printf("Digite el dato que desea agregar:");
scanf("%d",&dato);
if (dato!=0)
Encolar(q,dato); //le enviamos a la cola el dato
}while (dato!=0);
system("pause");
break;
case 2:
x = Desencolar(q);
printf("El numero desencolado es %d ",x);
system("pause");
break;
case 3:
printf("Mostrando la cola\n");
if(q.delante!=NULL) Mostrarcola( q );
else printf("Cola vacia ... \n");
system("pause");
break;
case 4:
Vaciacola( q );
printf("la cola ha sido vaciada ...\n");
system("pause");
break;
case 5:
printf("Ha salido del programa\n");
break;
default:
printf("Opcion no valida!\n");
getch();
}
} while(op!=5);
system("pause");
return 0;
}
/* Encolar elemento
------------------------------------------------------------------------*/
void Encolar( struct cola &q, int valor )
{
struct nodo *aux = new(struct nodo);
aux->numero = valor;
aux->siguiente = NULL;
if( q.delante == NULL)
q.delante = aux; // encola el primero elemento
else
(q.atras)->siguiente = aux;
q.atras = aux; // puntero que siempre apunta al ultimo elemento
}
/* Desencolar elemento
------------------------------------------------------------------------*/
int Desencolar( struct cola &q )
{
int num ;
struct nodo *aux ;
aux = q.delante; // aux apunta al inicio de la cola
num = aux->numero;
q.delante = (q.delante)->siguiente;
delete(aux); // libera memoria a donde apuntaba aux
return num;
}
/* Mostrar Cola
------------------------------------------------------------------------*/
void Mostrarcola( struct cola q )
{
struct nodo *aux;
aux = q.delante;
while( aux != NULL )
{
printf(" %d ",aux->numero);
aux = aux->siguiente;
}
}
/* Eliminar todos los elementos de la Cola
------------------------------------------------------------------------*/
void Vaciacola( struct cola &q)
{
struct nodo *aux;
while( q.delante != NULL)
{
aux = q.delante;
q.delante = aux->siguiente;
delete(aux);
}
q.delante = NULL;
q.atras = NULL;
}
No hay comentarios.:
Publicar un comentario