[解決済み] なぜリンクリストはノードの中にノードを格納するのではなく、ポインタを使用するのですか?
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)))
などとなり、無限大になります。
そんな物体は存在し得ない。それは ありえない .
関連
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] なぜ (int)x ではなく static_cast<int>(x) を使うのですか?
-
[解決済み] どちらが速いですか?スタックアロケーションとヒープアロケーション
-
[解決済み] リファレンスとポインタの使い分け
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】なぜダブルインダイレクトを使うのか、なぜポインターをポインターにするのか?
-
[解決済み] リンクリストの途中への挿入はなぜO(1)なのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】Enterキーを押して続行する
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み】STLにおけるvectorとlistの比較
-
[解決済み] なぜC++よりCを使う人がいるのか?[クローズド]