Cómo eliminar dos elementos seguidos en una lista vinculada

void delete_double (LN<T>*& l) {
    if (l == nullptr)
        return;

    LN<T> *p = l;
    while ( p -> next != nullptr && p -> next -> next != nullptr)
    {
        if (p -> value == p -> next -> value) // the current value is equal to the next value in the linked list 
        {
            if (p == l)                     // when the first two values are the same                                        // not sure if it is correct
            {
                l = l -> next -> next;
            }
            else                            // Problem should be here
            {
                LN<T> *to_delete = p;       //  Also tried this (doesn't work)
                p = p->next;
                delete to_delete;           //  LN<T>* to_delete = p;
                                            //  LN<T>* to_delete2 = p -> next;
                LN<T> *to_delete1 = p;      //  l = to_delete2 -> next;
                p = p->next;                //  delete to_delete;
                delete to_delete1;          //  delete to_delete2;
            }
        }
        else
        {
            p = p-> next;
        }
    }
}
//  Image below is my output

ingrese la descripción de la imagen aquí

Hola, estoy escribiendo una función que eliminaría dos valores seguidos en una lista vinculada si los dos valores son iguales. Mi código parece dejar de funcionar cuando la entrada es algo así como "1 -> 2 -> 3 -> 3 -> 4 -> nullptr". (La salida debe ser 1 -> 2 -> 4 -> nullptr). Sale sin darme ningún error. Y revisé la depuración línea por línea, de repente sale y mostró "las variables no están disponibles".

Supongo que es el problema que cuando elimino p, l señala basura, lo que causa el problema. Así que intenté una forma diferente de hacer que señale to_delete -> next. Pero todavía no funciona.

He intentado tantas horas solucionarlo y la depuración ni siquiera ayuda. ¿Puede ayudarme alguien, por favor? Muchas gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta