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;
}