Si se implementa una funcion de insercion asi:
Código
#include <stdio.h> #include <string.h> #include <stdlib.h> struct list { char data[512]; struct list *next; }; struct list *list_add(struct list **l, struct list element); //struct list *list_roam(struct list *l); struct list *list_add(struct list **l, struct list element) { struct list **aux, *head; unsigned int count=0; if(*l==NULL) { if(*l==NULL) { return *l; } (struct list *) &element, sizeof(struct list)); (*l)->next=NULL; return *l; } aux=l; head=*l; while((*aux)!=NULL) { (*aux)=(*aux)->next; ++count; } if((*aux)==NULL) { *l=head; return *aux; } (struct list *) &element, sizeof(struct list)); (*aux)->next=NULL; *l=head; return *aux; } int main(int argc, char **argv) { struct list *l=NULL; struct list data; list_add(&l, data); list_add(&l, data); list_add(&l, data); list_add(&l, data); list_add(&l, data); return 0; }
(notese que los prinft son para debugging)
Se como hacer una funcion de insercion funcional. Lo que no entiendo es por que esta forma de implementarla no funciona.
La funcion, segun lo que deduje, se comporta como si (*aux) no apuntara al siguiente nodo cuando la atraviesas, sino a algun otro lugar. No entiendo por que... ¿A donde va a apuntar? Si aux es un puntero, no la estructura. Ademas le especifique (aux=l) como se puede ver arriba.
Agradezco cualquier indicio. Un saludote.