Javaでは、参照はC++ポインターと参照を組み合わせたものです。C ++ポインタのように動作する場合もあれば、C++参照のように動作する場合もあります。割り当てを行うとき、関数に引数として渡されるとき、または等価性テストで使用されるときは、ポインターのように動作しますが、メンバーにアクセスするときは、C++参照のように動作します。つまり、Javaでtxを記述することは、常にC / C++のポインターのt->xと同等のように解釈されます(またはC ++参照のtxですが、Javaとは異なり、C ++参照はポインターのように動作しません)。
さらに、Javaおよび一般的なオブジェクト指向プログラミングでは、ほとんどの人は空のリストをnull変数で表すことを良い考えとは考えていません。初期化されると、変数は常に完全に機能するオブジェクトを参照する必要があるため、空のリストはオブジェクトの内部状態によって識別される必要があります。null参照を使用することではありません。関数の戻り値を使用して、それ自体が引数として同じ関数に渡されるノードを再割り当てすることは、古き良きC / C ++のハッキングに似ており、適切な最新のオブジェクト指向設計に似ています。したがって、代わりに:
root = _insert(root, element);
次のように書く必要があります。
MyList root = new MyList();
root._insert (element);
そしてあなたのクラスのどこかMyList:
private void _insert (int element) {
if (this.endNode == null) {
this.endNode = new Node();
} else {
this.endNode.nextNode = new Node();
this.endNote = this.endNote.nextNode;
}
this.endNode.element = element;
}
_insert関数でリンクリスト内の任意の位置に要素を挿入できるようにする場合は、ノードの親を通過するか(または、要素を最初の位置に挿入する場合はnull)、doubleを使用する必要があります。リンクリスト。
ところで、Javaには、基本的なニーズを隠蔽できるはずのツリーとリストを表すためのコレクションのフルセット(ジェネリックと非ジェネリックの両方)がすでにあります。