Título: Insertar un elemento ordenadamente en una lista enlazada simple Publicado por: NathanD en 26 Abril 2013, 17:11 pm Hola, tengo que hacer una lista enlazada simple en la que los elementos que se insertan, sea de una forma ordenada (de menor a mayor). He hecho la función y no consigo que funcione como debe, no sé cuál es el fallo y cómo debo corregirlo...
Os dejo la función (creo que no hace falta poner todo el programa, pero si así fuera decídmelo y lo pongo (igual me he líado con el nombre de alguna variable en la traducción jeje): Código
Gracias de antemano y saludos. Título: Re: Insertar un elemento ordenadamente en una lista enlazada simple Publicado por: SARGE553413 en 26 Abril 2013, 17:30 pm Podrías explicar primero que error te da exactamente?
Título: Re: Insertar un elemento ordenadamente en una lista enlazada simple Publicado por: xiruko en 26 Abril 2013, 19:18 pm Código
si tienes que ordenar los numeros de menor a mayor, entonces si entras en este if tendras que poner el numero antes del nodo de la lista en el que te encuentres. esto se complica puesto que seguro mas de una vez necesitaras insertar un nodo en medio de la lista, y diria que para hacerlo necesitas una lista doblemente enlazada, con un puntero que apunte al nodo anterior y otro al siguiente: Código
de esta manera, en el if deberias hacer algo asi: Código
claro que si lo haces asi, entonces deberas modificar el resto de codigo que tengas teniendo en cuenta el nuevo puntero al nodo anterior. tampoco he tenido en cuenta el comprobar si colocas el numero al principio de la lista, por lo que entonces tienes que hacer que 'anterior' apunte a NULL, igual que si es al final tienes que hacerlo pero con 'siguiente', pero espero que la idea te sirva. Código
luego esto de aqui no tiene nada que ver con el error, pero no entiendo por que no haces directamente: Código
saludos! EDITO: pensandolo mejor, otra opcion seria que declararas otro puntero auxiliar que apuntara al nodo anterior en el que te encuentres. de esta manera: Código
aunque aqui tampoco tengo en cuenta los casos especiales como insertar al principio o al final. pero bueno espero que te sirva, un saludo! Título: Re: Insertar un elemento ordenadamente en una lista enlazada simple Publicado por: rir3760 en 26 Abril 2013, 20:47 pm tengo que hacer una lista enlazada simple en la que los elementos que se insertan, sea de una forma ordenada (de menor a mayor). La forma mas sencilla es separando los tres casos:A) Lista vacía. B) Inserción como primer elemento. C) Inserción después del primero. Un programa de ejemplo basado en el tuyo: Código
Una forma mas corta y que evita los casos especiales pero a cambio es mas complicada e ineficiente es: Código
Un saludo Título: Re: Insertar un elemento ordenadamente en una lista enlazada simple Publicado por: NathanD en 27 Abril 2013, 14:25 pm Muchísimas gracias a todos, ya lo he conseguido con vuestra ayuda. Gracias!!
|