提问人:user47835 提问时间:7/16/2014 最后编辑:tshepanguser47835 更新时间:7/26/2014 访问量:445
从文件中读取名称以插入到二叉树中时出现问题
problems reading names from a file to insert into a binary tree
问:
从名称文件中读取,我试图将这些名称放入二叉搜索树中。但是由于某种原因,当我读取文件时,我从随机垃圾文件节点开始:
TreeNode* read_from_file(const char* file){
File *fp = fopen(file,"r");
char buffer[MAX_NAME_LEN];
TreeNode *t = NULL;
t = insert(t,buffer); //insert is just your standard function for creating a binary tree
while(!feof(fp)){
fscanf(fp,"%s",buffer);
insert(t,buffer);
}
return t;
fclose(fp);
}
然后,当我打印出树时,我的列表中会有一个看似随机的节点,例如“{”或“ÐFÀ>以及名称节点,而输入的文件只有 bob、matt 和 nick 等名称。
答:
0赞
Jongware
7/17/2014
#1
在用任何东西填充它之前,先插入。随机垃圾就是在你自己对它做任何事情之前碰巧在该数组中的东西。buffer
显而易见的解决方案:删除第一个 .(事实上,我想不出它存在的原因。由于您需要将起始节点保存在某个地方,以便在最后返回它,因此您需要重新考虑您的循环。要么插入一个虚拟字符串作为“root”(但不使用未初始化的!),要么在循环之前执行。insert
t
buffer
fscanf
评论
0赞
user47835
7/17/2014
啊,我明白了。感谢您清理它,我在第一次插入之前运行了 fscanf 并得到了预期的结果。
评论