Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/02/2013, 14:14
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Printar lista enlazada

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