Hacer funciones en C que permitan manejar una lista enlazada simple, donde se agregan valores por un extremo y se obtienen por el otro, de forma de mantener orden FIFO (First In First Out). La lista es una implementación general de una lista de punteros a cualquier cosa.
La interfaz a implementar (lista.h) es
/* * Lista simplemente enlazada para implementar una cola FIFO */ /* * Estructura interna de los nodos de la lista */ struct nodo { struct nodo *next; /* Enlace al siguiente */ void *val; /* Puntero generico al valor almacenado */ }; /* * Cabeza de lista con los punteros a la cabeza (h) y cola (t) * h apunta al primer elemento de la lista (el que le toca salir) * t apunta al ultimo (el que acaba de llegar) */ typedef struct { struct nodo *t, *h; } LISTA; /* Inicializa la lista */ LISTA *init_l(); /* Agrega un elemento */ void add_l(LISTA *, void *); /* Extrae un elemento */ void *extract_l(LISTA *); /* Retorna el numero de elementos almacenados */ int size_l(LISTA *); /* Retorna el elemento más nuevo de la lista */ void *tail_l(LISTA *); /* Retorna el elemento más viejo de la lista */ void *head_l(LISTA *);
Deben definir el tipo LISTA y la estructura "nodo"
e implementar todas estas funciones.
Se les provee el programa testlista.c que llama a las
funciones con varios argumentos. Requieren crear el archivo de declaración de la
interfaz lista.h.
La salida exacta que debieran obtener está
en el archivo outlista.txt para que la comparen.
La tarea debe entregarse antes del plazo final a través de U-cursos
y debe compilar sin errores y
ejecutar, o no será evaluada. Si tienen una tarea que funciona en parte, pero
no completa, entréguenla a tiempo y obtendrán algo de nota.