Salve ragazzi![]()
Ho implementato la vistia DFS per Grafi con liste di adiacenza, ecco il codice:
public void visita(NodoLA u){
for(int i = 0; i < g.getNodi().getSize(); i++){
st[i] = Stato.INESPLORATO;
prev[i] = null;
}
DFSvisit(u);
}
public void DFSvisit(NodoLA u){
st[u.indice(g.getNodi())] = Stato.APERTO;
ListNode adj = u.listaDiAdiacenza.getHead();
for(; adj != null; adj = adj.next){
if(st[((NodoLA)adj.getInfo()).indice(g.getNodi())] == Stato.INESPLORATO){
prev[((NodoLA)adj.getInfo()).indice(g.getNodi())] = u;
DFSvisit(((NodoLA)adj.getInfo()));
}
st[u.indice(g.getNodi())] = Stato.CHIUSO;
}
}
Sto cercando adesso di implementarlo per Grafi con matrice di adiacenza:
public void visita(NodoLA u){
for(int i = 0; i < g.getNodi().getSize(); i++){
st[i] = Stato.INESPLORATO;
prev[i] = null;
}
DFSvisit(u);
}
public void DFSvisit(NodoLA u){
st[u.indice(g.getNodi())] = Stato.APERTO;
for(int i=0; i<matriceDiAdiacenza[0].length;i++){
if(matriceDiAdiacenza[u.indice(g.getNodi())][i] != 1){
if(st[matriceDiAdiacenza[u.indice(g.getNodi())][i]] == Stato.INESPLORATO){
prev[matriceDiAdiacenza[u.indice(g.getNodi())][i]] = u;
DFSvisit(matriceDiAdiacenza[u.indice(g.getNodi())][i]);
}
st[u.indice(g.getNodi())] = Stato.CHIUSO;
}
}
Non riesco a capire dove sbaglio![]()