Curso 2023/2024
La siguiente solución tiene los siguientes costes, siendo n la talla de la lista:
Coste temporal en el peor caso: O(n).
Coste temporal en el mejor caso: O(1).
void Lista::eliminar(int posicion, Nodo * basura) { if (posicion == 0) { basura->anterior->siguiente = basura->siguiente; basura->siguiente->anterior = basura->anterior; delete basura; } else eliminar(posicion - 1, basura->siguiente); } void Lista::eliminar(int posicion) { // Suponiendo 0 <= posicion < talla if (talla == 1) { delete primero; primero = ultimo = nullptr; } else if (posicion == 0) { Nodo * basura = primero; primero = primero->siguiente; primero->anterior = nullptr; delete basura; } else if (posicion == talla - 1) { Nodo * basura = ultimo; ultimo = ultimo->anterior; ultimo->siguiente = nullptr; delete basura; } else eliminar(posicion, primero); talla--; }