Curso 2023/2024
Las siguientes soluciones tienen coste temporal en el peor caso O(n) y en el mejor caso O(1), siendo n la talla de la cola más pequeña.
Aquí se ilustra cómo resolver el problema sin el
atributo laTalla
, aunque teniéndolo sería mejor
empezar devolviendo false
si las tallas de las
colas difieren (para reducir el coste temporal en ese caso).
bool Cola::colasIguales(const Cola & otraCola) const { Nodo * n1 = primero, * n2 = otraCola.primero; while (n1 != nullptr && n2 != nullptr) { if (n1->dato != n2->dato) return false; n1 = n1->siguiente; n2 = n2->siguiente; } return n1 == nullptr && n2 == nullptr; // En este ejercicio tambien valdria: return n1 == n2; }
Alternativamente, con un bucle for
:
bool Cola::colasIguales(const Cola & otraCola) const { Nodo * n1, * n2; for (n1 = primero, n2 = otraCola.primero; n1 != nullptr && n2 != nullptr; n1 = n1->siguiente, n2 = n2->siguiente) if (n1->dato != n2->dato) return false; return n1 == n2; }