Guarda, io l'ho compilato facendo questa modifica (le parentesi nel'else):
codice:
void lista::eliminapari(){
nodo *p, *del;
int n=0;
p=l;
if (l==0)
cout<<"La lista è vuota";
while(p!=0){ //Scorro la lista
if (n%2==0 && n==0 ){ //Devo eliminare il primo elemento:
del=p;
p=p->succ;
l=p;
delete del;
cout<<"0 elemento cancellato\n";
n++;}
else if (n%2==0 && n!=0){ //Se n è pari
del=p->succ;
p->succ=p->succ->succ;
delete del; //Elimino l'elemento
cout<<n<<"elemento cancellato\n";
n++;
}
else {
p=p->succ; //Passo all'elemento successivo
n++; //Incremento n
}
}
Così non da errori, ma in realtà non cancella i nodi pari... tra l'altro non ho capito cosa vuoi fare nel else if