Avatar de usuario por pello in January 1, 1970, 1:00 am

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

1 comments |  PELMAlink |  1079 reads
0 de 0
dejar comentario
Comentarios
#1 avatar de Cloaked Anonymous dice:
duda???
Hola Pello. Me surge una duda en tu ejemplo, el cual funciona muy bien, pero... ¿porqué no fue necesario "crear el espacio" dentro de main() para miLista?
+-0 de 0
in January 1, 1970, 1:02 am





Leer e insertar esto