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.