http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx
上記のリンクの「Node」クラスには、データメンバーとして「Node」があります。それはどのくらい正確にメモリに保存されますか?「ノード」のメモリ構造を作成すると、メンバの 1 つが「ノード」メモリ構造を持つためです。なんらかの理由で、プログラム内でどのように解釈され、コンパイラによってコンパイルされるかという内部作業を理解できませんか?
http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx
上記のリンクの「Node」クラスには、データメンバーとして「Node」があります。それはどのくらい正確にメモリに保存されますか?「ノード」のメモリ構造を作成すると、メンバの 1 つが「ノード」メモリ構造を持つためです。なんらかの理由で、プログラム内でどのように解釈され、コンパイラによってコンパイルされるかという内部作業を理解できませんか?
あなたの悩みは、あなたが直観的にデータメンバ Node (というよりむしろそれに割り当てられたメモリ) が元の Node 内に含まれていると考えていることに起因していると思います。
理解するための鍵は、Node メンバーが実際には参照であることです。null の可能性があります。そのため、ノードを構成するデータを格納するために使用されるメモリはどこにでもある可能性があります。Node メンバーは基本的にポインターです。
.NET と最新の言語は、この種のことを曖昧にする傾向があるため、プログラマーはそれについて考える必要がありません。もし私があなたなら、質の高い C テキストを見つけて、ポインタに関する章を注意深く読むことを検討します。
そこのNode
メンバーは、あなたが呼ぶように「埋め込まれた」または「入れ子になった」わけではありません。
これは単に別のノードへの参照です。C または C++ を実行している場合、概念的には別のノードへのポインターになります。
private class Node
{
private Node next;
private T data;
...
}
private フィールドnext
には、タイプ のオブジェクトへの参照が格納されますNode
。参照するオブジェクトは、メモリ内の別の場所にあります。