将指针传递到函数的指针时发生分段错误

Getting Segmentation Fault when passing pointer to pointer to a function

本文关键字:指针 错误 分段 函数      更新时间:2023-10-16

将"指针对指针"传递给出现分段错误的函数时。代码通过插入函数生成二进制搜索树。插入函数是获取指向根节点的指针和它在正确位置插入的键值

#include<iostream>
#include<stdlib.h>
strong text
using namespace std;
struct node
{
    int data;
    struct node* left;
    struct node* right;
};
void insert(struct node** node,int data)    
{
    if( *node == 0 )
    {
        (*node) = (struct node* ) malloc(sizeof(struct node));
        (*node)->data = data;
        (*node)->left = 0;
        (*node)->right = 0; 
    }
    else if(data < ((*node) -> data)){      
        insert((&((*node) -> left)),data);
    }
    else if(data > ((*node)->data)){
        insert((&((*node)->right)),data);
    }
}
void inordertreversal(struct node* node)
{
    inordertreversal(node->left);
    cout << node->data;
    inordertreversal(node->right);
}
int main()
{
    struct node *root = 0;
    insert(&root,10);
    insert(&root,6);
    inordertreversal(root);
    return 0;
}

帮助备受赞赏的

每次检查下一个节点:

void inordertreversal(struct node* node)
{
    if (node->left)
        inordertreversal(node->left);
    cout << node->data;
    if (node->right)
        inordertreversal(node->right);  
}

之后:

$ g++ example.c -o example && ./example
6
10