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 |  918 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