一个简单的问C++题,请教

来源:百度知道 编辑:UC知道 时间:2024/09/12 22:12:47
#include <fstream>
using namespace std;
struct tree
{int num;tree *right,*left;tree(int n){num=n;right=NULL;left=NULL;}};
void put(int,tree *);
void write(tree *);
int main()
{fstream inp;
tree *date;
date=NULL;
inp.open("d:1.txt",ios::in);
int n ;
for(inp>>n;!inp.eof();inp>>n)
put(n,date);
inp.close();
write(date);
return 0;
}

void put(int n,tree *p)
{if(p!=NULL)
{if(p->num<n) put(n,p->left); else put(n,p->right);}
else p=new tree(n);
}
void write(tree *p)
{ if(p->left!=NULL) write(p->left);
cout<<p->num;
if(p->right!=NULL) write(p->right);
}
这是我编的一个程序,想从文件中读取数据后用二叉树进行排序后输出,但是在输出的时候总提示内存错误不能为read,我分析不出来,请教高手是哪里错了

两处错误
1 "d:1.txt"改为"d:\\1.txt"或"d:/1.txt"
路径需要这么写不多说了
2 void put(int,tree *)函数第二个参数应传引用即
void put(int,tree*&)不然用new申请的空间怎么寻址
不是内存泄漏了吗,你的是传值,tree仍是空指针啊

顺便说注意delete空间啊

date=NULL;
你一开始这个就为空指针,然后用put函数传进去的就是NULL,当然什么都没有,重新想下