Ordenamiento en lista encadenada simple
Publicado por Nicolás (1 intervención) el 15/11/2015 16:01:44
Hola a todos, Alguien sabe si existe alguna forma sencilla de volver al inicio de una lista encadenada simple? Tengo que ordenar una por el método de burbujas pero mi código solo ordena un ciclo, es decir llega hasta el final, ordena lo que puede ahi y termina, no repite ciclos para volver a ordenar. Por ejemplo, Si en la lista hay 1 3 2 0 me devuelve 1 2 0 3 y no 0 1 2 3 que sería lo normal.
Yo tengo tres punteros: Inicio, actual y siguiente
Inicio está siempre apuntando al comienzo de la lista y no se modifica, actual y siguiente se encargan de ir comparando los nodos dos a dos e intercambiarse si se cumple la condición.
Tengo armado un while que se encarga de recorrer la lista y cada vez que debe intercambiar un nodo, suma uno a una variable contador, cuando termina el ciclo ese contador se guarda en un auxiliar, el contador vuelve a 0 para verificar cambios en el proximo ciclo y se repite (en teoría) el proceso, el ciclo while se rompe cuando el auxiliar es 0 (porque el contador de intercambios es 0 y al final del ciclo se pasa al auxilar)
yo lo que hago es, cuando llega al final de la lista, apuntar Actual y siguiente a Inicio así:
Actual := Inicio;
Siguiente : Inicio;
pero no hace nada, como dije llega al final ordenando lo que puede y no hace mas nada. Alguna ayuda para volver al inicio de la lista para volver a ordenar?
Saludos.
Yo tengo tres punteros: Inicio, actual y siguiente
Inicio está siempre apuntando al comienzo de la lista y no se modifica, actual y siguiente se encargan de ir comparando los nodos dos a dos e intercambiarse si se cumple la condición.
Tengo armado un while que se encarga de recorrer la lista y cada vez que debe intercambiar un nodo, suma uno a una variable contador, cuando termina el ciclo ese contador se guarda en un auxiliar, el contador vuelve a 0 para verificar cambios en el proximo ciclo y se repite (en teoría) el proceso, el ciclo while se rompe cuando el auxiliar es 0 (porque el contador de intercambios es 0 y al final del ciclo se pasa al auxilar)
yo lo que hago es, cuando llega al final de la lista, apuntar Actual y siguiente a Inicio así:
Actual := Inicio;
Siguiente : Inicio;
pero no hace nada, como dije llega al final ordenando lo que puede y no hace mas nada. Alguna ayuda para volver al inicio de la lista para volver a ordenar?
Saludos.
Valora esta pregunta


0