C++ 从文件重建树
我在连接树的节点时遇到问题。在我的程序中,先执行函数C++ 从文件重建树,c++,C++,我在连接树的节点时遇到问题。在我的程序中,先执行函数read(),然后执行load()函数。在read()函数中,来自外部文件的所有数据将存储在数组中,然后在load()函数中重建。变量dat和i已全局声明。我的问题出在load()函数上。非常感谢您的帮助。顺便说一句,我在外部文件中的数据是按顺序排列的,我使用“#”表示空节点 void read() { string dat1; fstream file; file.open("data.txt", ios::in);
read()
,然后执行load()
函数。在read()
函数中,来自外部文件的所有数据将存储在数组中,然后在load()
函数中重建。变量dat
和i
已全局声明。我的问题出在load()
函数上。非常感谢您的帮助。顺便说一句,我在外部文件中的数据是按顺序排列的,我使用“#”表示空节点
void read()
{
string dat1;
fstream file;
file.open("data.txt", ios::in);
do
{
getline(file,dat1);
dat[i]=dat1;
i++;
}while(!file.eof());
file.close();
}
void load(node *root,int index)
{
node *nNode;
nNode=(node*)malloc(sizeof(node));
nNode->yes=NULL;
nNode->no=NULL;
nNode->data=dat[index];
if(index<i)
{
if(nNode->data!="#")
{
root=nNode;
load(root->yes,index+1);
load(root->no,index+1);
}
else
{
root=NULL;
return;
}
}
}
void read()
{
字符串dat1;
流文件;
打开(“data.txt”,ios::in);
做
{
getline(文件,dat1);
dat[i]=dat1;
i++;
}而(!file.eof());
file.close();
}
无效加载(节点*根,整数索引)
{
节点*nNode;
nNode=(node*)malloc(sizeof(node));
nNode->yes=NULL;
nNode->no=NULL;
nNode->data=dat[索引];
如果(索引数据!=“#”)
{
根=nNode;
加载(根->是,索引+1);
加载(根->否,索引+1);
}
其他的
{
root=NULL;
返回;
}
}
}
好吧,一个问题是,你从来没有在load()
中实际增加索引。另一个问题是,您也从未将root->yes或root->no分配给任何对象。而是指定传递值参数root
。也许你也希望这是一个参考
您可能想要更像:
// note that root and index are now pass-by-reference
void load(node &*root,int &index)
{
...
index++;
load(root->yes,index);
index++;
load(root->no,index);
...
}
你什么意思?“我的问题在加载函数上”它被窃听了吗?若然,如何处理;;它编译吗?如果没有,则会出现什么错误。它会编译,但节点未连接。对不起,我的问题。