Ciao a tutti,stavo tentando di fare una funzione in c per lo spostamento dei nodi,o meglio,dati due nodi scambiarli di posto.
Il problema è che il programma rimane "intrappolato" nella stampa.Per esempio,se abbiamo 5 (1,2,3,4,5) nodi e voglio scambiare il 2 con il 4,mi stamperà 1,4,4,4,4,......codice:void Swap(NODO **head,int s,int n)//FUNZIONE PER LO SPOSTAMENTO,s ed n sono i nodi che vogliamo invertire di posto { NODO *curr; NODO *prev; NODO *jolly;//dopo diverse prove risulta davvero difficile effettuare queste operazioni con soli tre puntatori,è possibile ma a un certo punto mi sono ritrovato costretto // a scollegare un nodo ancor prima di aver collegato il suo precedente al suo successivo int i,j; curr=prev=jolly=*head; for(i=0;i<n;i++) { if(i<n-1) // curr si ferma sulla posizione n-esima e prev su quella appena prima { prev=curr; } curr=curr->next; } for(j=0;j<s;j++) { jolly=jolly->next; } //jolly si ferma alla posizione s-esima (*head)->next=jolly->next; prev->next=curr->next; jolly->next=curr->next; prev->next=jolly; curr->next=(*head)->next->next; (*head)->next=curr; }
Mi veniva da pensare che avessi collegato a se stesso il 4 e lo stamp (avendo il compito di stampre il contenuto dei nodi finché nodo->next!=NULL) quindi continuasse senza sosta a stampare....Inizialmente avevo chiamato il puntatore jolly perchè dovevo spostarlo parecchio ma poi...
Grazie!

Rispondi quotando