Hola, buenas tardes. Este ejercicio pide que hacer una lista ordenada ascendente. ¿Por qué en el for se utiliza el downto en vez de to? ¿Con el downto no queda descendente?
En respuesta a Nicole Yael Muniz Malowany
Re: Examen Febrero 2024, ejercicio 1 parte b
de Pablo Recarte Fierro -
Buenas Nicole!
Tené en cuenta que la variable de control del se inicializa en
y decrementa hasta
.
En cada iteración se crea una nueva celda; la primera celda creada es la última celda de la lista ( tendrá el valor
y
apunta a
), la segunda apunta a la anterior (
tendrá el valor
y
apunta a la última celda), y así sucesivamente hasta que se cree la celda tal que
tenga el valor
. Esa es la primera celda de la lista y es la que es asignada a
.
En estos casos recomendaría hacer un pequeño ejemplo dibujando cómo se van creando y apuntando las celdas.
Cualquier cosa consultá nuevamente, saludos,
Pablo
En respuesta a Pablo Recarte Fierro
Re: Examen Febrero 2024, ejercicio 1 parte b
Entonces, ¿Siempre que yo quiera crear una lista tanto creciente como decreciente, voy a tener que hacerlo de atrás para adelante para poder "guardar" el valor anterior?
Gracias por responder, me sirvió bastante tu explicación.
Gracias por responder, me sirvió bastante tu explicación.
En respuesta a Nicole Yael Muniz Malowany
Re: Examen Febrero 2024, ejercicio 1 parte b
de Luis Sierra -
hola nicole,
la expresión "hacerlo de atrás para adelante" puede referirse a dos cosas.
1.
una, tiene que ver con las inserciones en una lista de punteros. si querés crear la lista
[123] -> [45] -> [888] -> [2] -> NIL
conociendo los datos, te conviene empezar desde el último:
NIL
[2] -> NIL
[888] -> [2] -> NIL
[45] -> [888] -> [2] -> NIL
[123] -> [45] -> [888] -> [2] -> NIL
de esta forma, siempre insertas al comienzo de la lista. si en vez de este orden usaras el otro,
NIL
[123] -> NIL
[123] -> [45] -> NIL
[123] -> [45] -> [888] -> NIL
[123] -> [45] -> [888] -> [2] -> NIL
debes recorrer toda la lista al insertar al final de la lista.
2.
la otra, el uso de downto. ese es un tema propio del problema. el enunciado pide crear una lista ascendente
como [1] -> [2] -> [3] -> NIL. por lo que te comentaba antes, habrá que insertar el tres, luego el dos, luego el uno.
una forma de resolverlo es con FOR k := 3 DOWNTO 1. si se hubiera pedido crear [3] -> [2] -> [1] -> NIL, el TO
hubiera sido lo adecuado.
saludos
luis
la expresión "hacerlo de atrás para adelante" puede referirse a dos cosas.
1.
una, tiene que ver con las inserciones en una lista de punteros. si querés crear la lista
[123] -> [45] -> [888] -> [2] -> NIL
conociendo los datos, te conviene empezar desde el último:
NIL
[2] -> NIL
[888] -> [2] -> NIL
[45] -> [888] -> [2] -> NIL
[123] -> [45] -> [888] -> [2] -> NIL
de esta forma, siempre insertas al comienzo de la lista. si en vez de este orden usaras el otro,
NIL
[123] -> NIL
[123] -> [45] -> NIL
[123] -> [45] -> [888] -> NIL
[123] -> [45] -> [888] -> [2] -> NIL
debes recorrer toda la lista al insertar al final de la lista.
2.
la otra, el uso de downto. ese es un tema propio del problema. el enunciado pide crear una lista ascendente
como [1] -> [2] -> [3] -> NIL. por lo que te comentaba antes, habrá que insertar el tres, luego el dos, luego el uno.
una forma de resolverlo es con FOR k := 3 DOWNTO 1. si se hubiera pedido crear [3] -> [2] -> [1] -> NIL, el TO
hubiera sido lo adecuado.
saludos
luis