1
class Nodetype
{
  int info;
  Nodetype next;

  Nodetype(int i)
  {
     info=i;
     next=null;
  }
}

私の教科書には、リンクリストを動的に作成するためのこのコードがあります。問題は、プログラムが行ごとに実行されるときに、変数 'info' をタイプ 'int' として定義し、変数 'next' を Nodetype として定義することです。

ここで実際に何が起こっているのですか?

変数 'next' に - が含まれることを意味しますか?

  1. コンストラクター「Nodetype」
  2. int 情報
  3. Nodetype "next" ここで、"next" はすべて 1,2,3 になり、3 は再び 1,2,3 になります... というように.... 無限まで?

仕組みが分からなくて本当にイライラしています 誰か簡単に説明してくれませんか?

4

9 に答える 9

3

あなたのコードは、リストの定義に非常によく従っています。リストはnull、または要素の後にリストが続きます。
あなたの場合、「要素」はint値によって定義され、「続く」部分はnext変数です。Java 変数 (int値がリテラルでない場合) は実際にはポインターであるため、初期化されていない間は有効な値を保存せず、メモリ領域を指していません (つまり、値は ですnull)。変数はそのまま保持されますが、next要素の後に他の要素が続くことはありません。リストに要素を動的に追加するには、追加した最後の要素へのポインターが必要です。そうしないと、それらを再び見つけることができなくなります。

int i = 0;
Nodetype head = new Nodetype(i++);
Nodetype last = new Nodetype(i++);
head.next = last;
while (i<5) {
    Nodetype temp = new Nodetype(i++);
    last.next = temp;
    last = temp;
}
while(head) {
    System.out.println(head.info);
    head = head.next;
}

最後の数行でheadポインタが失われ、リストの開始点に戻る方法がないことに注意してください..リストを操作するときは、このことを覚えておいてください;)

于 2011-12-10T11:43:10.203 に答える
1

これが機能する方法は、リストが単一の要素で構成されており、各要素には、その後に続く要素へのポインターのみが含まれていることです。

Nodetype next;

リスト内の各要素が実際に保持する情報は次のとおりです。

int info;

リストは「チェーン」のように考えることができます。実際には単一のオブジェクトではなく、複数のリンクの複合オブジェクトです。各リンクからは次のリンクのみを表示できます(または、両方向に参照があるリンクリストの場合:次と前のリンク)。したがって、すべての要素を使用できるようにするには、参照を保持する必要があります。 「チェーン」の最初の要素に。

注:Listオブジェクトは、「チェーン」の最初のリンクへの参照を持つ単一のオブジェクトです。

于 2011-12-10T12:17:24.197 に答える
1

最初、変数nextはどのオブジェクトも指していません (それは を指していますnull)。ある時点で、 で別のノードを指すようにしますnext = new NodeType(number)。アイデアは、構成を使用することです-別のインスタンスへの参照を持つクラスのインスタンスが1つあります。をnodeA指すようなものです。ここでは 3 つのインスタンスがあり、最初のインスタンスには 2 番目のインスタンスへの参照があり、2 番目のインスタンスには 3 番目のインスタンスへの参照があります。3 番目のインスタンスは最後のインスタンスであり、その次のインスタンスは を指します。nodeBnodeBnodeCnull

于 2011-12-10T11:27:43.990 に答える
1

フィールドnextはタイプ のオブジェクトへの参照Nodetypeです。にインスタンス化されるため、最初は何も指しませんnull。値を割り当てると、その値のみを指し、リスト内にサイクルを作成しない限り、無限に続くものはありません。

于 2011-12-10T11:28:14.003 に答える
1

クラスを作成NodeTypeし、クラスの内部でそのクラスのオブジェクトを定義しました。したがって、そのオブジェクト(例でnextは)にはint info変数NodeType nextオブジェクトとコンストラクターがあります。

于 2011-12-10T11:28:18.157 に答える
1

next別のNodetypeインスタンスへの参照です。next == null現在の要素がリストの最後の要素であることを意味する場合。

例を見てみましょう:

Nodetype node = new Nodetype(0);        // i = 0, next = null
Nodetype anotherNode = new Nodetype(1); // i = 1, next = null
node.next = anotherNode;                // now the first node has a ref to the second
于 2011-12-10T11:28:25.720 に答える
1

変数はどの値にも初期化されていないため、Null が含まれます。

于 2011-12-10T11:28:26.643 に答える
1

Nodetypeノード インスタンスに含まれるデータと、リンク リスト内の次のノードへの参照を定義するクラスです。次のノードへのその参照は、 type のオブジェクトになりますNodetype。これはリンク リストの古典的な実装です。

スタンフォード大学のリンク付きリストに関するこの素晴らしいリソースをチェックしてみてください。

于 2011-12-10T11:28:42.337 に答える