Ejercicio 3 de 2023ExamenDic

Ejercicio 3 de 2023ExamenDic

de Franco Gabriel Traversa Ojeda -
Número de respuestas: 2
Hola, creo haber encontrado un error dentro de la solución, resulta que al analizar el código entiendo que resulta en una lista circular, el problema es que tras la búsqueda, el aux queda en la ultima posición de la lista, se crea una celda, se vincula al inicio de la lista pero nunca se le asigna nil al final de la lista.
Me parece que haría falta poner aux:=nil al final del código después de que diga libros := aux. Si estoy equivocado háganmelo saber.

En respuesta a Franco Gabriel Traversa Ojeda

Re: Ejercicio 3 de 2023ExamenDic

de Ezequiel Maximiliano Amorin Camacho -
Buenas, espero que te encuentres bien!
No es necesario asignar NIL al final de la lista. Tras finalizar la búsqueda (en caso de que el libro no esté en la lista dada 'libros'), la variable 'aux' quedará con el valor NIL. En tal caso, lo que debemos de hacer es crear un nuevo nodo (para lo que se usa new(aux)), con el fin de asignarle los datos de id y cantidad de nuestro libro. Dicho nodo deberá ser el primero de la lista, como solicita la letra. Y para eso, basta con enlazar el nodo de aux con la lista original (nota que la lista original ya tenía un formato válido, es decir, que termina apuntando a NIL). Entonces, quedaría que el libro que añadimos es el primero en la lista, y luego la lista sigue como la original.

Ejemplo:
Si la lista tenía las id [1, 5, 2, 6, 8] y buscamos la id [7] no estará en la lista original. Por lo tanto, al enlazar quedaría [7, 1, 5, 2, 6, 8], con el nodo correspondiente al 8 apuntando a NIL, por lo que es válida.

Espero esto haya contestado tu pregunta. Un saludo!
En respuesta a Franco Gabriel Traversa Ojeda

Re: Ejercicio 3 de 2023ExamenDic

de Luis Sierra -
hola franco,

la respuesta que te proporcionó ezequiel es adecuada. espero que te haya quedado claro, cualquier duda vuelve a preguntar. pero usa el foro de la sección destinada a esto, indicada en https://eva.fing.edu.uy/mod/forum/discuss.php?d=314746#p685735. voy a mover este hilo a ese foro.

saludos

luis