gpt4 book ai didi

c++结构指针在初始化为NULL时无法读取内存

转载 作者:行者123 更新时间:2023-11-27 22:40:26 26 4
gpt4 key购买 nike

我正在创建一个包含二叉搜索树算法的程序,但我遇到了一个我不确定如何解决的问题。这是我的代码的相关部分。

struct node {
string data;
node *left = NULL;
node *right = NULL;
};

那是我的节点结构。

void Insert_Rec(string word, node* ptr) {

if (ptr->data == "") {

ptr->data = word;
ptr->left = NULL;
ptr->right = NULL;
cout << "overwitten!" << endl;
}
else if (word < ptr->data) {
if (ptr->left != NULL) {
cout << "Recursing left!";
Insert_Rec(word, ptr->left);
}
else {
ptr->data = word;
ptr->left = NULL;
ptr->right = NULL;
cout << "Inserted!";
}
}

而问题就出在这里,程序永远不会进入 if(ptr->left != NULL) 语句。查看我的 visual studio 调试器,ptr->left 显示“”而不是 NULL。我该如何解决这个问题!?我在这里尝试了其他一些解决方案,但它们要么不相关,要么根本不起作用!!

最佳答案

program never enters if(ptr->left != NULL) statement

好吧 ptr->left 开始时为 NULL,并且您永远不会向它分配任何其他内容,因此它将永远保持为 NULL。

if (ptr->left) {
cout << "Recursing left!";
Insert_Rec(word, ptr->left);
}
else {
/* this just overwrites the existing node in-place
but you should be creating a new node for the left child
ptr->data = word;
ptr->left = NULL;
ptr->right = NULL;
*/
ptr->left = new node{word, nullptr, nullptr};
cout << "Inserted!";
}

您的代码还有许多其他问题(Vlad-from-Moscow 的回答显示了此功能的更好设计,但您确实需要在容器类级别修复它),但这是直接阻碍。

关于c++结构指针在初始化为NULL时无法读取内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49452761/

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