Você está na página 1de 5

//IMPLEMENTACION DE COLAS COMO ARREGLOS

typedef enum{falso, verdadero} boolean;


#define COLAMAX 100
#include <stdio.h>
typedef int Tipo_elemento;

typedef struct colas{


int frente;
int final;
Tipo_elemento cola[COLAMAX];

} Tipo_cola;

// FUNCIONES PROTOTIPOS DE LA ESTRUCTURA DE DATOS COLA

void newCola(Tipo_cola *cola);


void encolar(Tipo_cola *q_ptr, Tipo_elemento elem);
Tipo_elemento desencolar(Tipo_cola *q_ptr);
Tipo_elemento frente(Tipo_cola *q_ptr);
int isEmpty(Tipo_cola *q_ptr);
int isFull(Tipo_cola *q_ptr);

//IMPLEMENTACIONES PARA LAS OPERACIONES SOBRE UNA COLA

/* NEW INICIALIZA LA COLA A UN ESTADO VACIO*/

void newCola(Tipo_cola *q_ptr){


q_ptr->frente = 0;
q_ptr->final = -1;

//PARA INSERTAR UN ELEMENTO EN LA COLA, SE VERIFICA PRIMERO SI LA COLA


ESTA LLENA.

/*INSERTAR UN ELEMENTO EN Q*/


void encolar(Tipo_cola *q_ptr, Tipo_elemento elem){
if(isFull(q_ptr))
return;
else {
q_ptr->final++;
q_ptr->cola[q_ptr->final] = elem;
return;
}
}

//PARA ELIMINAR UN ELEMNETO, SE TENDRA QUE DESPLAZAR DEL ARREGLO


CADA VEZ
//QUE SE RETIRE UN ELEMENTO DE LA COLA

/*ELIMINAR UN ELEMENTO DE Q*/


Tipo_elemento desencolar(Tipo_cola *q_ptr){
Tipo_elemento element;

int i;
if (isEmpty(q_ptr))
return -1;
else{
element = q_ptr->cola[q_ptr->frente];
q_ptr->final--;
for (i = 0; i <= q_ptr->final; i++)
q_ptr->cola[i] = q_ptr->cola[i+1];
return element;
}
}

//ENCONTRAR EL FRENTE O CABEZA DE LA COLA

/*OPERACION FRENTE*/
Tipo_elemento frente(Tipo_cola *q_ptr){
if(isEmpty(q_ptr))
return -1;
else
return q_ptr->cola[q_ptr->frente];

//DETERMINAR LA CONDICION VACIA Y LLENA DE UAN COLA

/*PARA VERIFICAR SI Q ESTA VACIA*/

int isEmpty(Tipo_cola *q_ptr){


if(q_ptr->final == -1)
return (1);
else
return (0);

/*PARA VERIFICAR SI Q ESTA LLENA*/


int isFull(Tipo_cola *q_ptr){
if(q_ptr->final == COLAMAX -1)
return (1);
else
return (0);

//SEGUIDAMENTE SE MUESTRA LA FUNCION main QUE USA LAS FUNCIONES DE


LA COLA

main(){
Tipo_cola cola;
Tipo_elemento elem;

newCola(&cola);

printf("INTRODUZCA ELEMENTOS (CARACTERES) A ALMACENAR EN LA COLA:


\n");

while((elem = getchar()) != '\n'){


encolar(&cola, elem); // INSERTAR EN LA COLA
printf("EL ELEMENTO INGRESADO EN LA COLA ES: %c\n", elem);

printf("ELIMINANDO ELEMENTOS DE LA COLA: \n");


while(!isEmpty(&cola)){
elem = desencolar(&cola); // ELIMINA DE LA COLA
printf("EL ELEMENTO ELIMINADO DE LA COLA ES: %c\n", elem);

if(desencolar(&cola) == -1)
printf("\nLA COLA ESTA VACIA: NO SE PUEDE REALIZAR LA OPERACION
ELIMINAR!\n");
return 1;

Você também pode gostar