1. ホーム
  2. c++

[解決済み] なぜリンクリストはノードの中にノードを格納するのではなく、ポインタを使用するのですか?

2022-08-26 15:59:55

質問

私は以前Javaでリンクリストを広範囲に扱ったことがありますが、C++は非常に初心者です。私はプロジェクトで渡されたこのノードクラスをうまく使っていました。

class Node
{
  public:
   Node(int data);

   int m_data;
   Node *m_next;
};

を使用したのですが、1つだけあまり答えになっていない質問があります。なぜ

Node *m_next;

の代わりにリストの次のノードを指すようにします。

Node m_next;

ポインタ版を使うのが良いということは理解しています。事実を論じるつもりはありませんが、なぜそれが良いのかが分かりません。ポインタがメモリ割り当てのために良い方法についてあまり明確な答えを得ました、そして、私はここで誰かが私がそれをよりよく理解するのを助けることができればと思いました。

どのように解決するのですか?

より良い方法どころか、それしかないのです。

もしあなたが Node オブジェクト の内部で、何が起こるでしょうか? sizeof(Node) はどうなるのでしょうか?それは sizeof(int) + sizeof(Node) と同じになります。 sizeof(int) + (sizeof(int) + sizeof(Node)) と同じになります。 sizeof(int) + (sizeof(int) + (sizeof(int) + sizeof(Node))) などとなり、無限大になります。

そんな物体は存在し得ない。それは ありえない .