Ciao! Sono agli inizi della programmazione sulle liste ed ho un problema che non riesco a risolvere.
Devo creare una funzione che presa una lista in input e un intero n mi crei una nuova lista duplicando solo i nodi in posizione multipla di n e maggiori del loro predecessore immediato. Il primo elemento, che non ha predecessore, è considerato per convenzione maggiore.
Ho scritto il seguente codice ma non funziona come dovrebbe:
codice:
node*newlis(node*lis,int n){ node*p,*head,*tail; int pos=1; head=tail=NULL; while(lis->next!=NULL){ if(((pos%n)==0)&&(lis->next->data)>(lis->data)){ p=newnode(); p->data=lis->next->data; p->next=NULL; if(head==NULL){head=p;tail=p;} else {tail->next=p; tail=p;}//Inserzione in coda } lis=lis->next; pos++;} return(head); }