motivo per cui questo codice Java non funziona?
-
21-09-2019 - |
Domanda
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 funzione insert
come insert(5); insert(8);
esso stampa alwaty root is null
.
che cosa è il problema ??
Soluzione
Il tuo problema è che variabile ro
all'interno del metodo insert
è solo una copia del riferimento alla bst.ro
. Il che significa che se si Ripristina la variabile ro
all'interno del metodo, solo la copia del riferimento sarà puntare il nuovo 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 .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow