gpt4 book ai didi

c - 字符串 BST 中的段错误

转载 作者:行者123 更新时间:2023-11-30 17:44:01 24 4
gpt4 key购买 nike

所以,我正在为大学的一门类(class)做作业,目标是构建一个字符串 BST,读取文本,将其划分并将每个单词插入到树中。

但是我在尝试(手动)插入单词时遇到段错误,你们能告诉我哪里做错了并建议修复吗?

/* Structure for the node */
typedef struct node {
char *key;
int multi;
struct node *left, *right;
} node;

node *root;

void Insert(char *x, node *p){
p = root;

/* if the pointer points to null, create a new node and insert the key */
if (*p == NULL){
(*p) = (node)malloc(sizeof(node))
(*p)->key = strcpy((*p)->key, x);
(*p)->left = NULL;
(*p)->right = NULL;
return;
}
else if (strcasecmp(x, p->key) < 0)
{
Insert(x, &p->left);
return;
}

else if (strcasecmp(x, p->key) > 0)
{
Insert(x, &p->right);
return;
}
/* if the words are equal, add 1 to the multi (how many times the word appears */
else
(*p)->multi = multi + 1;
}

最佳答案

这是有问题的语句:(*p)->key = strcpy((*p)->key, x); 您仅为节点分配了内存但指针key仍未初始化。您还需要为 key 分配内存,例如 (*p)->key = malloc(strlen(x) + 1);

关于c - 字符串 BST 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com