[英]C - Getting Segmentation fault(core dumped)
我剛開始學習樹並想實現它。此代碼編譯但運行后我得到分段錯誤。我有
有2個功能
1."new" 這將創建一個新節點以添加到樹中
2."insert" 這會將數據插入樹,這是一個遞歸 function
我只想檢查數據是否正在存儲,所以我嘗試在根節點中打印值,但隨后出現分段錯誤
我檢查了所有似乎正確但不知道出了什么問題的東西
struct node
{
int data;
struct node* left;
struct node* right;
};
struct node* new(int data)
{
struct node* newnode = (struct node*)malloc(sizeof(struct node*));
newnode->data=data;
newnode->left=newnode->right=NULL;
return newnode;
}
struct node* insert(struct node* root,int data)
{
if(root==NULL)
{
new(data);
}
else if (data<=root->data)
{
root->left =insert(root->left,data);
}
else
{
root->right=insert(root->right,data);
}
return root;
}
void main()
{
struct node* root = NULL;
root = insert(root,15);
root = insert(root,20);
printf("%d",root->data);
}
我希望 output 為 15,但會出現分段錯誤。
您不會將數據存儲在任何地方。 更改new(data);
到root = new(data);
在insert
function 中。
另一個錯誤是struct node* newnode = (struct node*)malloc(sizeof(struct node*))
應該是struct node* newnode = malloc(sizeof(*newnode))
。 這既修復了錯誤,又因其他原因而變得更好。
此外, void main()
應該是int main()
。
您必須更改 malloc 表達式。 您應該 malloc 結構節點而不是結構節點*。 此外,您應該將 void main 更改為 int main
首先,您確定要更改struct node* newnode = (struct node*)malloc(sizeof(struct node*));
to struct node* newnode = (struct node*)malloc(sizeof(struct node));
,刪除 sizeof 中的星號,否則無論結構的大小如何,您都會得到 8 個字節的大小;)
然后你得到一個stackoverflow錯誤,但我讓你搜索那個;p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.