Curso 2023/2024
Piensa qué es lo que está mal en la siguiente solución, y corrígelo.
void ColaDePrioridad::eliminarMinimo() { if (primero == nullptr) throw string("Intentando eliminar el minimo en una cola de prioridad vacia"); // Eliminar el minimo: for (actual = primero; actual != nullptr; actual = actual->siguiente) if (actual->siguiente == minimo) { actual->siguiente = minimo->siguiente; break; } delete minimo; // Buscar el nuevo minimo: minimo = nullptr; for (Nodo * actual = primero; actual != nullptr; actual = actual->siguiente) if (minimo == nullptr || actual->prioridad < minimo->prioridad) minimo = actual; }
Falta actualizar primero
si coincide con minimo
:
void ColaDePrioridad::eliminarMinimo() { if (primero == nullptr) throw string("Intentando eliminar el minimo en una cola de prioridad vacia"); // Eliminar el minimo: if (primero == minimo) primero = minimo->siguiente; else for (actual = primero; actual != nullptr; actual = actual->siguiente) if (actual->siguiente == minimo) { actual->siguiente = minimo->siguiente; break; } delete minimo; // Buscar el nuevo minimo: minimo = nullptr; for (Nodo * actual = primero; actual != nullptr; actual = actual->siguiente) if (minimo == nullptr || actual->prioridad < minimo->prioridad) minimo = actual; }