Chiaramente il codice che ho postato non funziona se consideri la posizione che parte da 0
(però basta che cancelli a botta sicura il primo elemento e poi lo applichi e va )

Tornando al tuo di sistema, per il predecessore basta che ti tieni un puntatore un passo indietro

codice:
pred = curr = l;

while(curr){
    if(n%2==0){
        //fai la cancellazione di curr, tenendo presente che per n==0, l deve essere aggiornato
        //pred->succ punterà a curr->succ
        curr=pred;
    }
    pred = curr;
    curr = curr->succ;
    n++;
}