Implementacion de una cola mediante lista enlazada circular
c:
/* Implementación de una cola mediante lista enlazada circular */
/* ----------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
/* declaracion */
/* ----------- */
struct tcola
{
int clave;
struct tcola *sig;
};
/* prototipos y codificación */
/* ------------------------- */
void crear(struct tcola **cola)
{
*cola = NULL;
}
int vacia(struct tcola *cola)
{
return (cola == NULL);
}
void encolar(struct tcola **cola, int elem)
{
struct tcola *nuevo;
nuevo = (struct tcola *) malloc(sizeof(struct tcola));
nuevo->clave = elem;
if (*cola == NULL)
nuevo->sig = nuevo;
else {
nuevo->sig = (*cola)->sig;
(*cola)->sig = nuevo;
}
(*cola) = nuevo;
}
void desencolar(struct tcola **c1, int *elem)
{
struct tcola *aux;
*elem = (*c1)->sig->clave;
if ((*c1) == (*c1)->sig) {
free(*c1);
*c1 = NULL;
}
else {
aux = (*c1)->sig;
(*c1)->sig = aux->sig;
free(aux);
}
}
/* Programa de prueba */
/* ------------------ */
#include <stdio.h>
int main(void)
{
struct tcola *cola;
int elem;
crear(038;cola);
if (vacia(cola)) printf("\nCola vacia!");
encolar(038;cola, 3);
desencolar(038;cola, 038;elem);
return 0;
}
/* ----------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
/* declaracion */
/* ----------- */
struct tcola
{
int clave;
struct tcola *sig;
};
/* prototipos y codificación */
/* ------------------------- */
void crear(struct tcola **cola)
{
*cola = NULL;
}
int vacia(struct tcola *cola)
{
return (cola == NULL);
}
void encolar(struct tcola **cola, int elem)
{
struct tcola *nuevo;
nuevo = (struct tcola *) malloc(sizeof(struct tcola));
nuevo->clave = elem;
if (*cola == NULL)
nuevo->sig = nuevo;
else {
nuevo->sig = (*cola)->sig;
(*cola)->sig = nuevo;
}
(*cola) = nuevo;
}
void desencolar(struct tcola **c1, int *elem)
{
struct tcola *aux;
*elem = (*c1)->sig->clave;
if ((*c1) == (*c1)->sig) {
free(*c1);
*c1 = NULL;
}
else {
aux = (*c1)->sig;
(*c1)->sig = aux->sig;
free(aux);
}
}
/* Programa de prueba */
/* ------------------ */
#include <stdio.h>
int main(void)
{
struct tcola *cola;
int elem;
crear(038;cola);
if (vacia(cola)) printf("\nCola vacia!");
encolar(038;cola, 3);
desencolar(038;cola, 038;elem);
return 0;
}