04-07-2011, 23:26
Me resistia a postear, pero no pude entender bien el tema éste. Alguno me podría explicar con paciencia XD como ordenar una lista enlazada? Me dicen que se hace con burbuja pero tengo problemas para aplicarlo en listas.
(04-07-2011 23:49)el pibe escribió: [ -> ]podes insertar ordenado, y te ahorras el trabajo de ordenar despues
http://holamundopascal.blogspot.com/2007...l#oplistas
Cita:En el blog de Pablo esta muy bien explicado. Pero si aún tenés dudas, esperame a mañana o pasado que te explico o en su defecto te scanneo el diagrama que yo suelo usar. Hace todo en uno, sin necesidad de hacer grandes separaciones XD
(05-07-2011 08:19)sentey escribió: [ -> ](04-07-2011 23:49)el pibe escribió: [ -> ]podes insertar ordenado, y te ahorras el trabajo de ordenar despues
http://holamundopascal.blogspot.com/2007...l#oplistas
El tema es que para el TP me piden mostrar la lista ordenada de 2 formas distintas. Asi que si la inserto ordenada al principio, la voy a tener que reordenar despues, ese es el problema que tengo. Tambien me dijeron que otra opcion es ir eliminandola, liberando la memoria e insertandola ordenada en una lista nueva, pero tambien se me complicó para hacer eso.
(05-07-2011 08:48)el pibe escribió: [ -> ](05-07-2011 08:19)sentey escribió: [ -> ](04-07-2011 23:49)el pibe escribió: [ -> ]podes insertar ordenado, y te ahorras el trabajo de ordenar despues
http://holamundopascal.blogspot.com/2007...l#oplistas
El tema es que para el TP me piden mostrar la lista ordenada de 2 formas distintas. Asi que si la inserto ordenada al principio, la voy a tener que reordenar despues, ese es el problema que tengo. Tambien me dijeron que otra opcion es ir eliminandola, liberando la memoria e insertandola ordenada en una lista nueva, pero tambien se me complicó para hacer eso.
podes solucionar eso barriendo una sola vez la lista1.
haces otra lista, lista2
y vas pasando los nodos de lista1 a lista2, insertando ordenado
(05-07-2011 08:19)sentey escribió: [ -> ]Tambien me dijeron que otra opcion es ir eliminandola, liberando la memoria e insertandola ordenada en una lista nueva, pero tambien se me complicó para hacer eso.Sé que ya lo hiciste, pero para el final te limitan la cantidad de nodos y a veces no podés permitirte tener dos listas.
while(lista<>NIL) do begin
info := eliminarPrimerNodo(lista);
insertarOrdenado(listaOrdenada,info);
end;
lista := listaOrdenada;
while(lista<>NIL) do begin
nodo := quitarPrimerNodoYHacerQueListaApunteAlSiguiente(lista);
insertarNodoOrdenado(listaOrdenada,nodo);
end;
lista := listaOrdenada;
function QuitarPrimerNodo...(var lista:tNodo):tNodo
var nodo:tNodo;
begin
nodo := lista;
lista := nodo^.sig;
nodo^.sig := NIL;
QuitarPrimerNodo... := nodo;
El otro igual que insetarOrdenado pero sin las líneas del principio
"new(nuevo);
nuevo^.info:=valor;"
Porque ya te envían nodo nuevo con la info cargada.