Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2022/2023

Ejemplos de errores en el ejercicio 3.e del tema 2

La siguiente implementación contiene 2 errores, ¿cuáles son?.

void ColaDePrioridadDeDobleFin::eliminarMaximo() {
   if (maximo == nullptr)
      throw string("Intentando eliminar el maximo en un conjunto vacio");

   Nodo * basura = maximo;
   if (maximo->anterior == nullptr) {
      maximo = nullptr;
   } else {
      maximo->anterior = maximo;
      maximo->siguiente = nullptr;
   }
   delete basura;
   laTalla--;
}
      

Solución

  1. Si había un solo nodo y se elimina, tanto maximo como minimo deben pasar a valer nullptr.

  2. En vez de maximo = maximo->anterior se ha escrito maximo->anterior = maximo.