Salve a tutti .. sto continuando con i miei esercizi in C ma trovo molte difficoltà con le liste.Sto svolgendo un esercizio che mi chide di aggiungere un elemento nella posizione data n,ma non riesco a capire per quale motivo creando la funzione che riporterò di seguito la lista che mi stampa è quella iniziale ,o meglio,non mi inserisce nessun elemento nella posizione data. dal profondo della disperazione

grazie a tutti in anticipo...
codice:
filaSCL aggiungi(filaSCL fila,Persona p){
filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
temp->elemento=p;
temp->next=NULL;
filaSCL ultimo=fila;
while(ultimo->next!=NULL){
ultimo=ultimo->next;
}
ultimo->next=temp;
filaSCL temp1=fila;
return temp1;
}
filaSCL raccomanda(filaSCL fila, Persona p, const int n){
int len=lunghezza(fila);
if(n>len){
return aggiungi(fila,p);
}
else{
int num=n;
filaSCL ultimo=fila;
while(num!=1){
ultimo=ultimo->next;
num--;
}
filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
filaSCL temp1=ultimo;
temp->elemento=p;
temp->next=temp1;
ultimo=temp;
filaSCL fila2=fila;
return fila2;
}
}
int lunghezza(filaSCL fila){
if(fila!=NULL){
return 1+lunghezza(fila->next);
}
return 0;
}