eliminarÚltimoeliminarÚltimo()Ahora implementaremos el método eliminarÚltimo().
Este es uno de los más complejos, así que ¡presta atención! 👀
Antes de eliminar, debemos asegurarnos de que la lista no esté vacía.
✅ Si está vacía → lanzamos una excepción controlada. Esto evita errores como NullPointerException.
Si la lista tiene solo un nodo, debemos dejarla vacía:
🎯 Así manejamos el caso más simple correctamente.
Necesitamos encontrar el nodo anterior al último. Para eso recorremos la lista desde el inicio:
Pero… este código no es muy legible 😅 Mejor lo convertimos en un método auxiliar.
getAnterior()📦 Este método devuelve el nodo que está antes del que se pasa como argumento. Si no hay ninguno → devuelve null.
getAnterior() en eliminarUltimo()📌 Ahora ultimo apunta al nodo anterior y cortamos el enlace hacia el nodo eliminado.
➡️ null
primero → 🟨10
último → 🟩30
Queremos eliminar el último nodo (30).
➡️ null
anterior → 🟦20
último → 🟩30
🧭 Hemos localizado el nodo anterior al último.
último.next = null
🧹💨 Nodo 30 eliminado de la lista.
El recolector de basura podrá eliminar el nodo 30.
último➡️ null
primero → 🟨10
último → 🟦20
🎯 último ahora apunta correctamente al nodo 20.
➡️ null
primero → 🟨10
último → 🟨10
Al eliminar el único nodo: primero = null y último = null ✅ Lista vacía 🧺
Después de la eliminación (revisa DEBUG):
primero → 10 → 20 → null
último → 20