Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2022/2023

Solución del ejercicio 2.e del tema 2

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;

}