2012-09-22 6 views
1

Binary Search Tree (BST)을 구현하는 C++ 프로그램을 작성하고 있습니다. 그래서, 나는 이진 트리 노드를 struct으로 구현하기 시작했다. 이진 트리 노드는 다른 이진 트리 노드에 두 개의 pointers을 포함하기 때문에 구조체에는 해당 구조체 유형의 변수에 대한 포인터가 포함됩니다. 이를 위해 struct의 forward 선언이 필요하다는 것을 알고 있습니다. 나는 그것을했다. 그러나 아래의 간단한 프로그램에 대한 런타임 오류가 발생하지만 아무것도하지 않고 해당 구조체의 멤버에게 값을 할당합니다. 나는 왜 그런지 이해하지 못한다. 이유를 알려주세요.이진 트리 노드 구성원 할당에 대한 런타임 오류

#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을 사용하고 있습니다.

감사합니다.

답변

1

노드의 메모리를 할당해야합니다. new 사용

t_node* root = new t_node(); 
+0

오, 이런 어리석은 실수 ...! 감사! – GigaRohan

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

나쁜입니다. 초기화되지 않은 포인터가 derecerening 있습니다.

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

노드에 메모리를 할당하고 문제를 해결합니다.