Gracias vangodp, me olvide que programo en C pero con compilador de C++ xD
:::EDITADO::
Me acabo de dar cuenta que no lei bien xD, confundí ordenar letras de una cadena, con ordenar lista dinamica alfabeticamente, bueno si te sirve ya lo tienes xD
De todas formas hice una función de ejemplo del ordenamiento a burbuja con un solo ciclo (creo que es compatible tambien con C, es la siguiente:
Código C++:
Ver originaltypedef struct nodo{
char nombre[100];
struct nodo *next;
}Nodo;
typedef Nodo *ListaNombres;
void order(ListaNombres *lista){
ListaNombres antes = NULL, ahora, despues, siguiente, temp;
ahora = *lista;
despues = ahora->next;
while (despues) {
if(despues->nombre[0] < ahora->nombre[0]){
siguiente = despues->next;
if(antes != NULL)
antes->next = despues;
despues->next = ahora;
ahora->next = siguiente;
//intercambiamos ahora y despues para continuar el ciclo
temp = despues;
despues = ahora;
ahora = temp;
}
antes = ahora;
ahora = ahora->next;
despues = despues->next;
}
}
Bueno lo probe, funciona (me hiciste repase un poco xD), lo que hace es recibir el puntero a una lista, luego use 5 punteros (puedes usar 4) y son:
antes - el puntero al nodo anterior, es diferente de null despues de el primer ciclo
ahora - seria el puntero al primer nodo seleccionado de la lista
despues - seria el puntero al nodo que le sigue al de "ahora"
siguiente - seria el puntero al nodo que le sigue a "despues" (sirve solo para guardar el la dirección del siguiente nodo, así no lo borramos mientras se hace el cambio, se podria usar solo temp)
temp - seria un puntero temporaneo que sirve para guardar la direccion antes de sustituir "ahora" con "despues" (porque no puedes hacer "ahora" = "despues" y "despues" = "ahora", sin perder la dirección de ahora)
bueno el ciclo termina cuando despues es igual a null, dentro del ciclo comparo los primeros caracteres de los nombres, para ordenarlos de menor a mayor (de A a z)
luego intercambio los nodos, hice un dibujo para mostrarlo xD
http://imgur.com/EhFQ50x
Bueno espero que te sirva de ayuda, saludos