Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136

    [php-cli]aggiungere un vertice alla lista di adiacenza di un altro

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136

    [Risolto]

    Ok,risolto.

    codice:
    function add_edge($u,$v){
    	$index=-1;
    	for($i=0;$i<count($this->list_ad);$i++){
    		if($this->list_ad[$i]->get_nome()==$u->get_nome()){//cerca l'indice del vertice
    			$index=$i;
    			break;
    		}
    	}
    	if( $index >= 0){
    		if( $this->list_ad[$index]->get_next() == NULL ){
    			$ver=new Vertice($v->get_nome());
    			$this->list_ad[$index]->set_next($ver);
    		}
    		else{
    			$tmp=$this->list_ad[$index]->get_next();
    			while($tmp->get_next() != NULL){
    				$tmp=$tmp->get_next();
    			}
    			$ver=new Vertice($v->get_nome());
    			$tmp->set_next($ver);
    		}
    	}
    	else{
    		print "vertice inesistente\n";
    	}
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.