Tengo un problema a la hora de imprimir todos los elementos de una lista dinamica.
El problema me ocurro cuando borro el ultimo elemento de la lista, es decir si añado unos cuantos nodos e imprimo todos los elementos funciona correctamente pero a la que borro el ultimo y hago que imprima otra vez todos los elementos de la lista se me desborda la memoria, es decir leo alguna posicion de memoria no declarada, haber si me podéis ayudar porque es muy raro.
Esta es la funcion de borrado:
Código:
y esta la de imprimir cada elemento de la lista:void eliminarNode(char dominio[20]) { int trobat=0; NodeDNS *Aux1; NodeDNS *Anterior; Aux1=PrimerNode; while (Aux1!=NULL && trobat==0) { if(strcmp(Aux1->nombre,dominio)==0)//Hemos encontrado el elemento a eliminar { trobat=1; if(PrimerNode==UltimNode)//Solament hi ha un element a la llista { free(Aux1); PrimerNode=NULL; UltimNode=NULL; } if(Anterior->DNSseguent==UltimNode) //Queremos elimiar el ultimo elemento { UltimNode=Anterior; printf("Ultim node ara es %s",UltimNode->nombre); printf("\nEl primer node ara es %s",PrimerNode->nombre); free(Aux1); } } else { Anterior=Aux1; Aux1=Aux1->DNSseguent; } } }
Código:
void printarLlistaDNS() { NodeDNS *Temp; Temp=PrimerNode; printf("Aux es: %s\n",Temp->nombre); while(Temp!=NULL) { printf("%s ->", Temp->nombre); if(Temp==NULL) { printf("NULL"); } else { Temp=Temp->DNSseguent; } } printf("\n"); }