motivo per cui questo codice Java non funziona?

voti
0

Ho questo frammento di codice

class bst {
  public node root=null;

  bst() {
    root=null;
  }

  public void insert(int data) {  
    insert(this.root,data);
  }

  private void insert(node ro,int data) {
    if (ro==null) {
      print (root is null);
      ro=new node(data);
    } else if (data>ro.data)
      insert(ro.right,data); 
    else
      insert(ro.left,data);
  }

  private void print (String str) 
  {
    System.out.println(str);
  }
}

Quando chiamo la insertfunzione come insert(5); insert(8);esso alwaty stampe root is null.

qual è il problema??

È pubblicato 17/01/2010 alle 15:31
fonte dall'utente
In altre lingue...                            


1 risposte

voti
8

Il tuo problema è che rovariabile all'interno del insertmetodo è solo una copia del riferimento bst.ro. Il che significa che se si reimposta la rovariabile all'interno del metodo, solo la copia del riferimento punterà la nuova ro , l'oggetto originariamente passato rimarrà la stessa.

La tua domanda è il top 1 di passaggio dei parametri FAQ. Io stesso già risposto a questa domanda più di una volta. Check it out .

Risposto il 17/01/2010 a 15:33
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more