Salve a tutti! Sto provando a svolgere degli esercizi sulle liste, e a quanto pare non riesco ad effettuare l'eliminazione degli elementi.
L'esercizio chiede di eliminare dalla lista ogni elemento la cui distanza dal precedente sia minore di K, in cui K è un intero che viene passato alla funzione.

Questo è il codice che ho scritto, e che ovviamente non funziona:

codice:
void lista::distanzak(int k){
    nodo *p,*prec,*del;
    p=l;
    
    while (p->succ!=0){
        prec=p;
        p=p->succ;
        if ((p->valore<(prec->valore-k))|| (p->valore>(prec->valore+k))){
            del=p;
            p=p->succ;
            delete del;
        }else p=p->succ;
            
    }
      }