簡體   English   中英

分段錯誤:C++ 代碼 BST 中的 11

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM