Ejercicio 1 parte V - Error fantasma

Ejercicio 1 parte V - Error fantasma

de Nahuel Senaque Lopez Areco -
Número de respuestas: 2

Buenas, queria preguntar a ver si me podian ayudar a descubrir que es lo que esta mal en el codigo, ya que tiene un comportamiento muy extrano.

El problema esta en removeAll, pero ya el printf previo a la invocacion del mismo no funciona. Ahora bien, al comentar la linea del removeAll -linea 188- el programa termina sin inconvenientes como se puede observar en la siguiente imagen.

Incluso siendo asi, mas extrano aun me parecio el hecho de que no llegue a imprimir siquiera en la primera linea del procedimiento:

Busque el error y me salio que es que se esta intentando acceder a un lugar de memoria que no esta permitido pero no tengo idea de por que salta eso. Agradeceria mucho una mano. Saludos.

En respuesta a Nahuel Senaque Lopez Areco

Re: Ejercicio 1 parte V - Error fantasma

de Jonathan Gabriel Correa Paiva Correa -
2 cosas, primero el while que chequea el primer valor es innecesario, por 2 cosas, primero que no hay una instrucción como para ir al siguiente valor y además l != NULL lo chequeaste en el primer if.
El problema está en el segundo while, tu chequeas que el elemento donde estas parado no sea null, pero adentro accedes al siguiente.
En respuesta a Jonathan Gabriel Correa Paiva Correa

Re: Ejercicio 1 parte V - Error fantasma

de Nahuel Senaque Lopez Areco -
El primer while sirve para eliminar el primer elemento de la lista (para esto hay que modificar directamente l) si vale x, y si el siguiente tambien vale x, entonces se vuelve a borrar, por eso se chequea que exista un siguiente antes de verificar si el elemento vale x.
La instruccion para ir al siguiente valor seria p=l->sig, y se va a repetir siempre y cuando el primer elemento de la lista sea x. En caso de que todos los elementos fueran x, al final quedaria p = l->sig (null) y l=p (null). Deberia terminar sin problemas.

Acabo de verificar lo segundo y si, era eso! Muchisimas gracias, y si lo que dije antes hay algo mal te agradeceria que me lo comentaras tambien.