c++问题,调了好长时间.......无语!跪求高手帮帮忙啊! 20
#include<iostream>usingnamespacestd;template<classT>structbtnode{Tdata;btnode*lchild;...
#include<iostream>
using namespace std;
template <class T>
struct btnode
{
T data;
btnode * lchild;
btnode * rchild;
};
template <class T>
class erchashu
{
btnode<T> * shu;
public:
erchashu(){shu=NULL;} //构造函数,将根节点置空
~erchashu(){clear (shu);}
void greaterchashu(T end);
int prleafcount();
};
template<class T>
static int clear(btnode<T>*bt)
{
if(bt)
{
clear(bt->lchild);
clear(bt->rchild);
cout<<"释放指针"<<bt<<"所指向的空间"<<endl;
delete bt;
}
return 0;
}
template< class T>
void erchashu<T>::greaterchashu(T end) //通过先序序列的方式构造二叉树
{
cout<<"请按照先序序列的顺序输入二叉树数据"<<end<<"为空指针域的标志!"<<endl;
btnode<T> *p;
T x;
cout<<"请输入数据:";
cin>>x;
if(x==end)return ;
p=new btnode<T>;
if(!p)
{
cout<<"申请内存失败!"<<endl;
exit(1);
}
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
shu=p;
creat(p,1,end);
creat(p,2,end);
}
template< class T>
static int creat(btnode<T>*p,int k,T end)
{
btnode<T>*q;
T x;
if(x!=end)
{
q=new btnode<T>;
q->data=x;
q->lchild=NULL;
q->rchild=NULL;
if(k==1)p->lchild=q;
if(k==2)p->rchild=q;
creat(q,1,end);
creat(q,2,end);
}
return 0;
}
template< class T>
int erchashu<T>::prleafcount() //通过先序遍历二叉树的方法统计二叉树里的叶子节点个数
{
btnode<T>*p;
p=shu;
int count=0;
return pretraverse(p,count);
}
template <class T>
static int pretraverse(btnode<T>*p,int &count)
{
if(p!=NULL)
{
if(p->lchild==NULL&&p->rchild==NULL)
count++;
pretraverse(p->lchild,count);
pretraverse(p->rchild,count);
}
return count;
}
int mian()
{
int m;
cout<<'\t'<<'\t'<<"欢迎使用本程序 (*^__^*) 设计者 China 小飞鱼"<<endl;
cout<<"请输入结束的标志!";
cin>>m;
erchashu<int>T;
T.greaterchashu(m);
int s=T.prleafcount();
cout<<"二叉树中叶子节点的个数为"<<s;
return 0;
}
最后给出的错误为:main.c:(.text+0x104)||undefined reference to `_WinMain@16'|
||=== Build finished: 1 errors, 0 warnings ===||
其实这个问题很简单啊!就是丫的。。。。main不是mian 展开
using namespace std;
template <class T>
struct btnode
{
T data;
btnode * lchild;
btnode * rchild;
};
template <class T>
class erchashu
{
btnode<T> * shu;
public:
erchashu(){shu=NULL;} //构造函数,将根节点置空
~erchashu(){clear (shu);}
void greaterchashu(T end);
int prleafcount();
};
template<class T>
static int clear(btnode<T>*bt)
{
if(bt)
{
clear(bt->lchild);
clear(bt->rchild);
cout<<"释放指针"<<bt<<"所指向的空间"<<endl;
delete bt;
}
return 0;
}
template< class T>
void erchashu<T>::greaterchashu(T end) //通过先序序列的方式构造二叉树
{
cout<<"请按照先序序列的顺序输入二叉树数据"<<end<<"为空指针域的标志!"<<endl;
btnode<T> *p;
T x;
cout<<"请输入数据:";
cin>>x;
if(x==end)return ;
p=new btnode<T>;
if(!p)
{
cout<<"申请内存失败!"<<endl;
exit(1);
}
p->data=x;
p->lchild=NULL;
p->rchild=NULL;
shu=p;
creat(p,1,end);
creat(p,2,end);
}
template< class T>
static int creat(btnode<T>*p,int k,T end)
{
btnode<T>*q;
T x;
if(x!=end)
{
q=new btnode<T>;
q->data=x;
q->lchild=NULL;
q->rchild=NULL;
if(k==1)p->lchild=q;
if(k==2)p->rchild=q;
creat(q,1,end);
creat(q,2,end);
}
return 0;
}
template< class T>
int erchashu<T>::prleafcount() //通过先序遍历二叉树的方法统计二叉树里的叶子节点个数
{
btnode<T>*p;
p=shu;
int count=0;
return pretraverse(p,count);
}
template <class T>
static int pretraverse(btnode<T>*p,int &count)
{
if(p!=NULL)
{
if(p->lchild==NULL&&p->rchild==NULL)
count++;
pretraverse(p->lchild,count);
pretraverse(p->rchild,count);
}
return count;
}
int mian()
{
int m;
cout<<'\t'<<'\t'<<"欢迎使用本程序 (*^__^*) 设计者 China 小飞鱼"<<endl;
cout<<"请输入结束的标志!";
cin>>m;
erchashu<int>T;
T.greaterchashu(m);
int s=T.prleafcount();
cout<<"二叉树中叶子节点的个数为"<<s;
return 0;
}
最后给出的错误为:main.c:(.text+0x104)||undefined reference to `_WinMain@16'|
||=== Build finished: 1 errors, 0 warnings ===||
其实这个问题很简单啊!就是丫的。。。。main不是mian 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询