void LinkLinkIt::accederLli(Link link, Fecha fecha){ if (_actual != fecha) { _actual = fecha; } DatosLink* puntLink = _linkInfo.Obtener(link); int a = 0; if (!puntLink->dameAccesos().EsVacia() && fecha == puntLink->dameAccesos().Ultimo().dameDia()) { a = puntLink->dameAccesos().Ultimo().dameCantA(); a++; Lista<Acceso> nuevosAccesos = puntLink->dameAccesos(); nuevosAccesos.Ultimo().guardoAcceso(a); puntLink->nuevoAccesos(nuevosAccesos); } else { Acceso nuevoAcceso = Acceso(fecha, 1); puntLink->agregarAcceso(nuevoAcceso); } if (puntLink->dameAccesos().Longitud() == 4) { puntLink->nuevoCantAccesosRecientes(puntLink->dameCantAccesos() - puntLink->dameAccesos().Primero().dameCantA()); Lista<Acceso> listaFin = puntLink->dameAccesos(); listaFin.Fin(); puntLink->nuevoAccesos(listaFin); } puntLink->nuevoCantAccesosRecientes(puntLink->dameCantAccesos() + 1); }
Conj<Lista<Compu> > Red::CaminosDeLargoN(Compu c1, Compu c2, Nat n){ Conj<Lista<Compu> > caminos; if(n == 0){ Lista<Compu> camino; camino.AgregarAtras(c1); caminos.AgregarRapido(camino); } else { Conj<Compu> vec = this->Vecinos(c1); Conj<Compu>::Iterador itVecinos(vec); while(itVecinos.HaySiguiente()){ Compu v = itVecinos.Siguiente(); Conj<Lista<Compu> > cams = this->CaminosDeLargoN(v, c2, n-1); Conj<Lista<Compu> >::Iterador itCaminos(cams); while(itCaminos.HaySiguiente()){ Lista<Compu> camino = itCaminos.Siguiente(); if(camino.Ultimo() == c2){ Lista<Compu> camino2 = camino; camino2.AgregarAdelante(c1); caminos.Agregar(camino2); } itCaminos.Avanzar(); } itVecinos.Avanzar(); } } Conj<Lista<Compu> >::Iterador itCaminos2(caminos); while(itCaminos2.HaySiguiente()){ if(itCaminos2.Siguiente().Ultimo() != c2){ itCaminos2.EliminarSiguiente(); } if(itCaminos2.HaySiguiente()) itCaminos2.Avanzar(); //esta linea faltaba en el tp } return caminos; }