const Lista<T> coso (const Lista<T> lista1, const Lista<T> lista2) { Lista<T> resultado; int acarreo = 0; Lista<T>::IteradorInverso it1 = lista1.principioInverso(); Lista<T>::IteradorInverso it2 = lista2.principioInverso(); while (it1 != lista1.finalInverso() && it2 != lista2.finalInverso()) { T temp = it1.elem() + it2.elem(); resultado.ponDr ((temp % 10) + acarreo); acarreo = temp / 10; it1.avanza(); it2.avanza(); } while (it1 != lista1.finalInverso()) { resultado.ponDr ((it1.elem() + acarreo) % 10); acarreo = (it1.elem() + acarreo) / 10; it1.avanza(); } if (it2 != lista2.finalInverso()) { resultado.ponDr ((it2.elem() + acarreo) % 10); acarreo = (it2.elem() + acarreo) / 10; it2.avanza(); } return resultado; }
int viaDeEntrada(Pila<int> &entrada, Lista<int> &secuenciaSalida) { int numeroVagones = 0; //cout << "Introduzce el número de bagones: "; cin >> numeroVagones; if ( numeroVagones != 0) { //cout << endl << "Escriba la secuencia resultante de los bagones: " << endl; for (int n = 0; n < numeroVagones; n++) { //if( n > 0 ) cout << "Queda/n " << numeroVagones-n << " bagón/es." << endl; int a; cin >> a; secuenciaSalida.ponDr(a); } for (int j = numeroVagones; j > 0 ; j--) { entrada.apila(j); } } return numeroVagones; }