[C con Clase] Burbuja mejorado sobre lista

Emilio chulorey en gmail.com
Mar Nov 21 20:13:42 CET 2006


[Perdón si esto lo leen dos veces. Lo había enviado ni bien empezó a
funcionar la nueva lista, pero no lo vi llegar. Vuelvo a probar.]

Hola. Tengo una función de ordena burbuja simple, en listas. Intercambia
el
valor de los datos de los nodos, no los nodos de lugar.
Quería hacer la misma función mejorada (las mejoras que quiero están en el
curso http://www.conclase.net/c/orden/burbuja.html en el punto 4).
Mi código es el siguiente:
void ordenarLista(pNodo *lista)
{
  int *menor, *mayor;
  int tmp;
  pNodo auxBucleInterno = *lista;
  pNodo auxBucleExterno = *lista;
  while(auxBucleExterno->siguiente)
    {
      while(auxBucleInterno->siguiente)
    {
      menor = &auxBucleInterno->dato;
      mayor = &auxBucleInterno->siguiente->dato;
      if (*mayor < *menor)
        {
          tmp = *mayor;
          *mayor = *menor;
          *menor = tmp;
        }
      auxBucleInterno  = auxBucleInterno->siguiente;
    }
      auxBucleInterno = *lista;
      auxBucleExterno  = auxBucleExterno->siguiente;
    }
}





Más información sobre la lista de distribución Cconclase