Listas enlazadas
Ejemplo de listas enlazadas usando punteros.
/**
* lista.c
* Muestra el uso de estructuras
* Compilacion: gcc -o lista lista.c
* curso de C
*/
#include <stdio.h>
#include <stdlib.h>
/* Declaramos la estructura */
struct lista {
char *nombre;
struct lista *siguiente;
};
/* Funciones para manejar lista */
void print_lista (struct lista *l);
void add_lista (struct lista *l, char * nombre);
main ()
{
struct lista miLista;
printf("Vamos a usar la lista.
");
miLista.nombre = "Primero";
miLista.siguiente = NULL;
print_lista(&miLista);
add_lista(&miLista,"Segundo");
print_lista(&miLista);
add_lista(&miLista,"Tercero");
print_lista(&miLista);
}
/* Implementación de print_lista */
void print_lista (struct lista *l)
{
printf("
LISTA=[");
/* Recorre la lista */
while (l != NULL)
{
printf(" %s,",l->nombre);
l = l->siguiente;
}
printf("]
");
}
/* Implmentacion add_lista */
void add_lista (struct lista *l, char * nombre)
{
struct lista *tmp;
/* Creamos el nuevo espacio*/
tmp = (struct lista *) malloc(sizeof(struct lista));
tmp->nombre = nombre;
tmp->siguiente = NULL;
/* Nos vamos al final */
while (l->siguiente != NULL)
l = l->siguiente;
l->siguiente = tmp;
}
pello.io