Examen Febrero 2024, ejercicio 1 parte b

Examen Febrero 2024, ejercicio 1 parte b

de Nicole Yael Muniz Malowany -
Número de respuestas: 3

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  for se inicializa en  fin y decrementa hasta  ini.

En cada iteración se crea una nueva celda; la primera celda creada es la última celda de la lista ( val tendrá el valor  fin y  sig apunta a  NIL), la segunda apunta a la anterior ( val  tendrá el valor  fin-1  y  sig apunta a la última celda), y así sucesivamente hasta que se cree la celda tal que  val  tenga el valor  ini . Esa es la primera celda de la lista y es la que es asignada a  rango.

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

de Nicole Yael Muniz Malowany -
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.
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