Ver Mensaje Individual
  #15 (permalink)  
Antiguo 28/07/2013, 15:57
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Guia_Listas_Enlazadas - C++

Código C:
Ver original
  1. while(aux!=apunt->dato)
  2.     {
  3.         apunt=apunt->sig;
  4.     }

Y que sucede si entras un valor que no está en la lista? Primero que teoricamente entra en un bucle infinito, y segundo que nunca llegará a entrar en el bucle infinito porque el ultimo elemento de la lista tiene sig=NULL, es decir que en la primera iteracion de lo que sería bucle infinito provocas una violacion de segmento al intentar acceder al 'dato' de un 'apunt' nulo.

No iteres sobre el valor esperado sino sobre la lista; recorre la lista buscando la colision con el dato entrado, y solo intenta eliminarlo en caso que exista. Para cada nodo deberas guardar un puntero a su elemento anterior, de forma que si tienes a->b->c y quieres borrar 'b', deberas asignar 'c' al siguiente de 'a' ok? De lo contrario nunca podras recuperar los datos ni para liberar la memoria bloqueada (al menos durante la ejecucion).

Saludos
vosk