γιατί αυτός ο κώδικας java δεν λειτουργεί;

ψήφοι
0

Έχω αυτό το κομμάτι κώδικα

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

Όταν καλώ την insertλειτουργία, όπως insert(5); insert(8);το alwaty εκτυπώσεις root is null.

ποιο είναι το πρόβλημα??

Δημοσιεύθηκε 17/01/2010 στις 15:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
8

Το πρόβλημά σας είναι ότι roμεταβλητή μέσα στον insertμέθοδος είναι απλώς ένα αντίγραφο της αναφοράς στο bst.ro. Αυτό σημαίνει ότι αν επαναφέρετε το roμεταβλητό εσωτερικό της μεθόδου, μόνο το αντίγραφο της αναφοράς που θα δείξει το νέο ro , το αρχικά πέρασε αντικείμενο θα παραμείνει η ίδια.

Η ερώτησή σας είναι η κορυφή 1 της παραμέτρου Περνώντας Συχνές ερωτήσεις. Εγώ ο ίδιος έχει ήδη απαντηθεί αυτό το ερώτημα περισσότερες από μία φορές. Έλεγχος αυτό έξω .

Απαντήθηκε 17/01/2010 στις 15:33
πηγή χρήστη

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