si penso che mi stiate sopravvalutando,ho provato a inventarmi un esercizio a caso(devo smetterla di inventare esercizi a caso),l'esercizio vuole che io scambi di posto due nodi in una piccola struttura con 5 nodi,in particolare il nodo2 col nodo4:

codice:
#include <stdio.h>
#include <stdlib.h>

typedef struct Nd{
                  int dato;
                  struct Nd *next;
                  }Nodo;

int main()
{
    Nodo *head;
    Nodo *curr;
    Nodo *prec;
    
    head=malloc(sizeof(Nodo));
    head->dato=10;
    head->next=NULL;
    
    curr=malloc(sizeof(Nodo));
    curr->dato=20;
    curr->next=NULL;
    prec=curr;
    head->next=curr;
    
    curr=malloc(sizeof(Nodo));
    curr->dato=30;
    curr->next=NULL;
    prec->next=curr;
    prec=curr;
    
    curr=malloc(sizeof(Nodo));
    curr->dato=40;
    curr->next=NULL;
    prec->next=curr;
    prec=curr;
    
    curr=malloc(sizeof(Nodo));
    curr->dato=50;
    curr->next=NULL;
    prec->next=curr;
    
    printf("\n contenuto dei 5 nodi: \n");
    curr=head;
    while(curr->next!=NULL)
    {
                           printf("\n  %d \n",curr->dato);
                           curr=curr->next;
    }
    printf("\n  %d \n",curr->dato);
  
  //QUELLO CHE VOGLIO FARE ORA E' SPOSTARE IL NODO 2 CON IL NODO 4 
  //PER PRIMA COSA PROVO A SPOSTARE IL NODO2 TRA IL 4 E IL 5,PRIMA ASSICURIAMOCI DI COLLEGARE L'1 AL 3
  
  prec=head->next;
  head->next=prec->next;
  curr=head->next->next;
  prec->next=curr->next;
  head->next->next=prec;
  curr->next=head->next;
  head->next=curr;
  
  printf("\n\n ora inverto di posto il nodo 2 con il nodo 4: \n");
 
  curr=head;
 
 while(curr->next!=NULL);
  {
                          printf("\n  %d\n",curr->dato);
                          curr=curr->next;
  }
  printf("\n  %d\n",curr->dato);

  system("PAUSE");	
  return 0;
}
dopo la prima stampa abbiamo:

head-> [1]
prec-> [4]
curr-> [5]

per spostare i due nodi ho fatto questo(o almeno è quello che credevo di fare,corrisponde alla parte appena dopo la "descrizione" nel programma):

- prec->[2]
- [1]->[3] (intendo che collego il nodo1 al nodo3)
- curr->[4]
- [2]->[5]
- [3]->[2]
- [4]->[3]
- [1]->[4]

Deve essere piuttosto difficile per voi senza tutti i disegnini che ho fatto :|,spero si capisca

Il problema è il seguente,da quello che stampa,o meglio da quello che non stampa, non risultano collegati il nodo 4 con il nodo3,ho provato a fargli stampare con un if quelli con curr->next!=NULL e mi stampa solo 10.

Ora sono triste ero convintissimissimo