Curso 2023/2024
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--; }
Si había un solo nodo y se elimina,
tanto maximo
como minimo
deben
pasar a valer nullptr
.
En vez de maximo = maximo->anterior
se ha
escrito maximo->anterior = maximo
.