Has echo una funcion un poco liada, es mas simple de lo que parece:
Código:
buscas el nodo a eliminar
- si es el el primero: asignas el siguiente al que se va a eliminar
- si no es el primero: asignas al anterior el siguiente del que vas a eliminar
Te he modificado un poco la funcion pero no te constará entender lo que hay:
Código:
void eliminarNode(char *dominio) {
NodeDNS *cur, *pre;
cur = PrimerNode;
pre = NULL;
while(cur) {//cicle
if(!strcmp(cur->nombre, dominio)) {//troba objectiu
if(!pre) {//objectiu == primer node
PrimerNode = cur->DNSseguent;
}
else {//objectiu != primer node
pre->DNSseguent = cur->DNSseguent;
}
//allibera
free(cur);
//surt del cicle
break;
}
//iteracio
pre = cur;
cur = cur->DNSseguent;
}
}
Creo que deberias modificar un poco la funcion para que retorne 1 o 0 en funcion de si encuentra el nodo a eliminar, de esta forma podras saber desde la llamada a eliminarNode si el nombre del nodo existe o no y si se ha ejecutado la operacion.
Saludos
vosk