hvorfor dette java koden ikke virker?

stemmer
0

Jeg har denne koden fragment

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);
  }
}

Når jeg kaller insertfunksjonen som insert(5); insert(8);det alwaty utskrifter root is null.

hva er problemet??

Publisert på 17/01/2010 klokken 14:31
kilden bruker
På andre språk...                            


1 svar

stemmer
8

Ditt problem er at rovariabelen inne i insertmetoden er bare en kopi av henvisningen til bst.ro. Dette betyr at hvis du tilbakestiller den rovariable inne i metoden, vil bare kopien av referansen peke nytt ro , vil den opprinnelig vedtatt objekt forblir den samme.

Spørsmålet ditt er toppen en av parameteroverføring FAQ. Jeg selv allerede besvart dette spørsmålet flere ganger. Sjekk det ut .

Svarte 17/01/2010 kl. 14:33
kilden bruker

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