se conosci i puntatori a node allora fai
codice:
struct nodo{
       int key;
       nodo* next;
};
typedef nodo* pnodo;

bool switch ( nodo * n1, nodo *n2 ) {
  if ( n1 && n2 ) {
    nodo * t = n1->next;
    n1->next = n2->next;
    n2->next = t;
    return true;
  }
  else
    return false;
}
se invece conosci solo chiave prima devi trovare il nodo che corrisponde a quella chiave e poi fare come sopra
codice:
nodo * find ( nodo *root, int key ) {
  nodo * n = root;
  while (  n && n->key != key )
    n=n->next;
  return n;
}