Te pondre un ejemplo corto y sencillo para que entiendas el funcionamento:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FF(str) str[strlen(str)-1]=0
struct lista
{
char nombre[14];
struct lista *sig;
};
struct lista *crear(struct lista *p);
int
main()
{
struct lista *L=NULL; //<- para mantener la lista
struct lista *p; //<- puntero para crear nuevos nodos
p=crear(p); //creamos nuevo nodo
p->sig=L; //enlazamos el nodo->sig a la lista
L=p; //hacemos que lista empieze por el nuevo nodo creado
fprintf(stdout,"Nodo contiene-> %s\n",p->nombre);
free (p);
return 0;
}
struct lista *crear(struct lista *p)
{
if((p=(struct lista *)malloc(sizeof(struct lista)))==NULL)
{
perror("Error asignando memoria");
exit(-1);
}
printf("Introduce nombre para nodo: ");
fgets(p->nombre,13,stdin);
FF(p->nombre);
return p; //devolvemos la estructura creada
}