1

を実装する C++ プログラムを作成していBinary Search Tree (BST)ます。そこで、二分木ノードを として実装することから始めましたstruct。二分木ノードには他の二分木ノードへの 2 つのノードが含まpointersれるため、構造体にはその構造体型の変数へのポインターが含まれます。このためには、構造体の前方宣言が必要であることを理解しています。私はそれをしました。それでも、上記の構造体のメンバーに値を代入するだけの単純なプログラムでは、実行時エラーが発生します。理由がわかりません。理由を教えてください。

#include <iostream>
using namespace std;

struct t_node;

struct t_node
{
       int data;
       t_node* left;
       t_node* right;
};

int main()
{
    t_node *root;
    root->data = 2;

    cin.get();
    return 0;
}

を使用してDev-C++ 4.9.9.2います。

ありがとう!

4

2 に答える 2

1

ノードにメモリを割り当てる必要があります。使用new:

t_node* root = new t_node();
于 2012-09-22T02:46:41.457 に答える
1
t_node *root;
root->data = 2;

悪い。初期化されていないポインターを derecerence しています。

t_node *root = new t_node;
root->data = 2

ノードにメモリを割り当て、問題を修正します。

于 2012-09-22T02:49:37.870 に答える