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); }