Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2022/2023

Solución del ejercicio 8.c del tema 2

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

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 {
      Nodo * basura = primero;
      for (int i = 0; i < posicion; i++)
	 basura = basura->siguiente;
      basura->anterior->siguiente = basura->siguiente;
      basura->siguiente->anterior = basura->anterior;
      delete basura;
   }
   talla--;
}