[英]segmentation fault: 11 in C++ code BST
# include <iostream>
using namespace std;
struct node{
int data;
node *l,*r,*p;
};
int main(){
int i,n;
cout<<"Enter the number of nodes\n";
cin>>n;
i=1;
while(i<=n){
y=root;
x = (node *)malloc(sizeof(node));
cin>>x->data;
while(y!=NULL){
if(x->data < y->data){
parent = y;
y = y->l;
}
else{
parent = y;
y = y->r;
}
}
if(root==NULL){
root=x;
}
else if(parent->data < x->data){
parent->r = x;
x->p = parent;
}
else{
parent->l = x;
x->p = parent;
}
i++;
}
return 0;
}
它使用 g++ 命令通過命令窗口在 iMac 上給出分段錯誤,但在其他 IDE(在線和離線 IDE)上運行良好,我什至在我的惡魔個人計算機上嘗試了代碼,他有 DEV c++ 並且它運行良好它,我還嘗試了在線 IDE(網站:-codechef 等,並且工作得很好)。 在此處輸入圖片說明
假設你有 decalration node *x,*y,*root,*parent;
(正如您在另一個答案的評論中所述)然后變量root
未初始化。 因此,任何使用它的嘗試都是未定義的行為,因此您的程序可能會崩潰(或可能不會)。 您所看到的(有時程序有效,有時無效)是非常典型的未初始化變量。 嘗試這個
node* root = NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.