Elimine todos los nodos duplicados en una lista enlazada no ordenada.
El objetivo principal de mi código es tomar datos del usuario y luego buscar dentro de una lista enlazada simple un objetivo y eliminar todos los nodos que sean iguales a dicho objetivo. Esta es también la base de la lista enlazada simple:
typedef struct Node
{
int data;
struct Node *next;
}no;
Entrada: 1, 2, 3, 2, 5 –> a eliminar = 2
Entonces, la nueva lista enlazada es: 1, 3, 5
Este es mi función de eliminación de duplicados que he escrito.
Funciona para elementos objetivo que están en el medio de la lista enlazada, pero cuando el primer nodo, que es la cabeza de la lista es el objetivo, no lo elimina o pierde la dirección de la cabeza y he intentado muchas formas de guardar la cabeza de la lista para que no se pierda.
También no funciona para la situación en la que el último nodo es el objetivo.
He tenido problemas con esta solución y no he podido resolverlo, así que estaría feliz y agradecido si alguien me ayuda con esto.
davy.ai
Problema con la función to-delete en Listas Enlazadas Simples
El propósito principal del código es tomar datos de entrada del usuario y buscar en la lista enlazada simple para encontrar el objetivo y eliminar todos los nodos que son iguales al objetivo. La siguiente es la base de la lista enlazada simple dada:
Los datos de entrada son, 1, 2, 3, 2, 5 y los datos objetivo a eliminar son 2. El resultado esperado es una nueva lista enlazada: 1, 3, 5.
La función to-delete escrita para lograr lo mismo es:
Sin embargo, la implementación actual de la función no funciona en dos casos:
firstNode
, que es la cabeza de la lista, es el objetivo. En este caso, la función no lo elimina o pierde la dirección de la cabeza.El problema es que la cabeza de la lista siempre debe ser preservada. La función debe ser modificada para manejar estos casos especiales.