Esto va de ordenación de una lista (siguiendo con el tema de mi post anterior, qué le vamos a hacer 

). El caso es que no me funciona y no sé por qué, ¿veis dónde puede estar el error?  
short sw;
do
  {
  for(nuevo=primero,sw=0;nuevo->sig!=0;nuevo=nuevo->sig)
	  {
		ultimo=nuevo->sig;
		if(nuevo->n > ultimo->n)
			  {
			  aux=ultimo->n;
			  ultimo->n=aux;
			  sw=1;
			  }
	  }
  }
while(sw==1);
}