Salve,
ho un problema con il metodo per aggiungere un vertice alla lista di adiacenza di un altro.Di seguito il codice:
codice:
function add_edge($u,$v){
$index=-1;
for($i=0;$i<count($this->list_ad);$i++){//cerco l'indice del vertice
if($this->list_ad[$i]->get_nome()==$u->get_nome()){
$index=$i;
break;
}
}
if( $index >= 0){//se hai trovato il vertice nel grafo
if( $this->list_ad[$index]->get_next() == NULL ){//se la lista di adiacenza è vuota
$this->list_ad[$index]->set_next($v);
}
else{//se non è vuota accoda il vertice.
$tmp=$this->list_ad[$index]->get_next();
while($tmp->get_next() != NULL){
$tmp=$tmp->get_next();
}
$tmp->set_next($v);
}
}
else{
print "vertice inesistente\n";
}
}
Il fatto che il vertice venga accodato è voluto.Quando la eseguo,aggiungendo b,c,d alla lista di adiacenza di a, ottengo:
codice:
Graph Object
(
[list_ad:Graph:private] => Array
(
[0] => Vertice Object
(
[nome:Vertice:private] => a
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => b
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => c
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => d
[next:Vertice:private] =>
)
)
)
)
[1] => Vertice Object
(
[nome:Vertice:private] => b
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => c
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => d
[next:Vertice:private] =>
)
)
)
[2] => Vertice Object
(
[nome:Vertice:private] => c
[next:Vertice:private] => Vertice Object
(
[nome:Vertice:private] => d
[next:Vertice:private] =>
)
)
[3] => Vertice Object
(
[nome:Vertice:private] => d
[next:Vertice:private] =>
)
)
)
Cosa sbaglio?Saluti.