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->元素时,我只是继续获取段默认值。非常感谢你的回答。C++指针混乱(二进制搜索树)
编辑:
哇,这个指针的东西真的令人困惑。所以当我做node * pA = * A时,我想我会创建一个指向A的位置的指针。然后,当我做pA = new节点时,它会通过pA创建一个指向堆的节点对象,这是相同的作为答:我说什么错了吗?
你在'new'后面缺少'* A = pA'。 – avakar
为什么node * A = NULL; ?为什么不是节点* A =新节点; ? –
考虑阅读关于_C++ references_。除了'cout'这行,这段代码是C.而且C++增加了引用,以避免混淆指针指向事物的指针,例如现在正在咬你的指针。 –