我是数据结构的新手,我们被指派使用二叉树实现制作猜谜游戏。我已经完成了没有文件实现的程序流程。我已经将二叉树预先保存在外部文件上,现在我在从文件重建树时遇到问题 在我的文件中我有:
是Angel Locsin吗?:#Neneng B?Sam Pinto? ##白美人?是吗? 玛丽安里维拉? ## HotandSexy?是Cristine Reyes吗? ###
“#”用于NULL节点。
我也有我的代码。我遵循教授给我的算法。我在互联网上搜索并给了我相同的算法,就像我的教授说的那样。我的问题是程序崩溃的每三个非空数据。我认为崩溃的主要原因是在插入第三个非空数据后未设置为null的节点。如果是这样,我怎么能把它设置为NULL,这样我的程序就不会崩溃。我将文件中的数据分配到字符串数组中,并在数组的最后一个索引处设置一个“\ 0”。
void read(node *temp)
{
while(array[j]=="#")
j++;
if(array[j]=="\0")
return;
node *nNode;
nNode = new node;
nNode->yes=NULL;
nNode->no=NULL;
nNode->data=array[j];
j++;
temp=nNode;
read(temp->yes);
read(temp->no);
}
答案 0 :(得分:0)
您的问题在于您的读取功能的定义。我想这个想法是“temp”是“node *”类型的输出参数。但这不是你写的。 您需要有一个指针或对“node *”参数的引用,例如这样:
void read(node** temp)
然后调整代码的其余部分,以便通过适当的(de)引用进行编译。这应该解决你的崩溃。