En un fichero tengo:
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <string.h> #define T_NOM 101 #define T_EDAD 3 struct persona { char nom[100]; char edad[3]; struct persona *siguiente; }; #define LEE_CAD(c,n) { int i=0; \ c[i]=getchar();\ while((c[i]=='\n') || (c[i]=='\t')) c[i]=getchar();\ while ((c[i]!='\n') && (i < (n-1))){ \ i++;\ c[i]=getchar(); }\ c[i]='\0'; }
En otro tengo el main:
Código C:
Ver original
#include "estructura_de_datos.h" int main(){ struct persona *lista=NULL; struct persona *nodo; int op; void alta_inicio(); void alta_final(); void recorrer_lista(); do{ do{ }while((op < 1) || (op > 4)); if(op != 4) switch(op){ case 1: { alta_inicio(&lista);break;} case 2: { alta_final(&lista);break;} case 3: { recorrer_lista(&lista);break;} } }while(op != 4); } void alta_inicio(struct persona **lista){ struct persona *nuevo_nodo; if(nuevo_nodo != NULL){ nuevo_nodo->siguiente = *lista; *lista = nuevo_nodo; LEE_CAD(nuevo_nodo->nom,100); LEE_CAD(nuevo_nodo->edad,3); } } void alta_final(struct persona **lista){ struct persona *nuevo_nodo; struct persona *nodo_aux; if(nuevo_nodo != NULL){ nodo_aux = *lista; while(nodo_aux->siguiente != NULL) nodo_aux = nodo_aux->siguiente; nodo_aux->siguiente=nuevo_nodo; nuevo_nodo->siguiente=NULL; LEE_CAD(nuevo_nodo->nom,100); LEE_CAD(nuevo_nodo->edad,3); } else } void recorrer_lista(struct persona **lista){ struct persona *nodo_aux; nodo_aux = *lista; while(nodo_aux != NULL){ nodo_aux = nodo_aux->siguiente; } }
Cuando lo compilo y le doy a añadir al principio me sale bien, pero cuando quiero añadir al final no hace nada.