Exemplo n.º 1
0
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);

}
Exemplo n.º 2
0
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;
}