Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2024/2025

Solución del ejercicio 8.d del tema 2

La siguiente solución tiene los siguientes costes, siendo n la talla de la lista:

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--;
}