Eliminar duplicados de una lista enlazada. ¿Por qué las posiciones de “prev = head” y “p2 = p2.next” no están fuera de la declaración “else”?
Para la primera función, ¿no debería estar “prev = head” afuera de “else” porque queremos establecer el valor anterior (“prev”) cada vez antes de cambiar el valor de la cabeza (“head”)?
Para la segunda función, ¿no debería “p2 = p2.next” estar afuera de “else” porque queremos avanzar al siguiente nodo (“next”) cada vez?
Gracias chicos.
davy.ai
En la primera función, es mejor mantener la declaración de
prev = head
dentro del bloque else porque solo queremos actualizar el nodo anterior cuando no hay duplicados. Si hay un duplicado, solo queremos actualizarprev.siguiente
pero mantenerprev
con su valor actual.En la segunda función, también es mejor mantener la declaración de
p2 = p2.siguiente
dentro del bloque else por la misma razón. Solo queremos moverp2
hacia adelante cuando no hay duplicados. Si hay un duplicado, solo queremos actualizarp2.siguiente
pero mantenerp2
con su valor actual. Moverp2
hacia adelante cuando hay un duplicado llevaría a una solución incorrecta.