struct node{
int element;
node* left;
node* right;
};
typedef node* SET;
void INSERT(int x, SET* A){
node* pA = *A;
if (pA == NULL){
pA = new node;
pA->element = x;
pA->left = NULL;
pA->right = NULL;
}
else{
if (x < pA->element){
INSERT(x,&(pA->left));
}
else if (x>pA->element){
INSERT(x, &(pA->right));
}
}
}
int main(){
node* A = NULL;
INSERT(1,&A);
cout <<A->element<<endl;
return 0;
}
上記のコードは、要素を BST に挿入する単純な挿入メソッドです。A->要素にアクセスすると、セグメントのデフォルトを取得し続けます。ご回答ありがとうございます。
編集:
うわー、このポインターは本当に紛らわしいです。したがって、node* pA = *A を実行すると、A の場所を指すポインターが作成されると思いました。次に、pA = new node を実行すると、同じ pA を指すヒープ内にノード オブジェクトが作成されます。私は何か間違ったことを言っていますか?