25 个错 , 改死了

languagec 2005-11-13 10:23:33
#include <iostream>
using namespace std;
template<typename elem_Type>
class Node
{
Node *left,*right;
elem_Type data;
friend class Tree<elem_Type>;
public:
Node(elem_Type temp=NULL)
{
left=right=NULL;
data=temp;
}
};

template <typename elem_Type>
class Tree
{
public:
Tree(elem_Type data=NULL);
elem_Type Insert(elem_Type data);
void Show(int level=1)
{
Travel(Head,level);
}
int ReplaceHead(elem_Type data)
{
elem_Type temp=Head->data;
Head->data=data;
return temp;
}
~Tree();
private:
void Destroy(Node<elem_Type> *);
void Travel(Node<elem_Type> *cur,int level);
Node<elem_Type> *Head;
};

template<typename elem_Type>
Tree<elem_Type>::Tree(elem_Type data)
{
Head=new Node<elem_Type>(data);
}

template<typename elem_Type>
elem_Type Tree<elem_Type>::Insert(elem_Type data)
{
Node<elem_Type> *cur,*pre,*temp;
cur=Head;
pre=cur;
while(cur)
{
if(data < cur->data)
{
pre=cur;
cur=cur->left;
}
else if(data > cur->data)
{
pre=cur;
cur=cur->right;
}
else
{
return data;
}
}
temp=new Node(data);
if(data < pre->data)
{
pre->left=temp;
}
if(data >pre->data)
{
pre->right=temp;
}
//cout<<"temp->data\t"<<temp->data<<endl;
return data;
}

template<typename elem_Type>
void Tree<elem_Type>::Travel(Node<elem_Type> *cur,int level)
{
int i;
if(cur==NULL) return ;
for(i=0;i<level-1;i++)
cout<<"\t";
cout<<"|__\t";
cout<<cur->data<<endl;
Travel(cur->left,level+1);
Travel(cur->right,level+1);
}

template<typename elem_Type>
void Tree<elem_Type>::Destroy(Node<elem_Type> *cur)
{
if(cur==NULL) return ;
//
Node<elem_Type> *Left=cur->left,*Right=cur->right;
delete cur;

Destroy(Left);
Destroy(Right);
}

template<typename elem_Type>
Tree<elem_Type>::~Tree()
{
Destroy(Head);
}

int main()
{
Tree<int> Avl_tree;
int node;
//cin>>node;
//Avl_tree.ReplaceHead(node);
while(cin>>node)
{
Avl_tree.Insert(node);
}
Avl_tree.Show();
return 0;
}
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingzhu 2005-11-13
  • 打赏
  • 举报
回复

template<typename elem_Type>
class Node
之前添加
template <typename elem_Type>
class Tree;

temp=new Node(data);改为temp=new Node<elem_Type>(data);

改后错误数为零
ma100 2005-11-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
template <typename elem_Type> class Tree;

template<typename elem_Type>
class Node
{
Node *left,*right;
elem_Type data;
friend class Tree<elem_Type>;
public:
Node(elem_Type temp=NULL)
{
left=right=NULL;
data=temp;
}
};

template <typename elem_Type>
class Tree
{
public:
Tree(elem_Type data=NULL);
elem_Type Insert(elem_Type data);
void Show(int level=1)
{
Travel(Head,level);
}
int ReplaceHead(elem_Type data)
{
elem_Type temp=Head->data;
Head->data=data;
return temp;
}
~Tree();
private:
void Destroy(Node<elem_Type> *);
void Travel(Node<elem_Type> *cur,int level);
Node<elem_Type> *Head;
};

template<typename elem_Type>
Tree<elem_Type>::Tree(elem_Type data)
{
Head=new Node<elem_Type>(data);
}

template<typename elem_Type>
elem_Type Tree<elem_Type>::Insert(elem_Type data)
{
Node<elem_Type> *cur,*pre,*temp;
cur=Head;
pre=cur;
while(cur)
{
if(data < cur->data)
{
pre=cur;
cur=cur->left;
}
else if(data > cur->data)
{
pre=cur;
cur=cur->right;
}
else
{
return data;
}
}
temp=new Node<elem_Type>(data);
if(data < pre->data)
{
pre->left=temp;
}
if(data >pre->data)
{
pre->right=temp;
}
//cout<<"temp->data\t"<<temp->data<<endl;
return data;
}

template<typename elem_Type>
void Tree<elem_Type>::Travel(Node<elem_Type> *cur,int level)
{
int i;
if(cur==NULL) return ;
for(i=0;i<level-1;i++)
cout<<"\t";
cout<<"|__\t";
cout<<cur->data<<endl;
Travel(cur->left,level+1);
Travel(cur->right,level+1);
}

template<typename elem_Type>
void Tree<elem_Type>::Destroy(Node<elem_Type> *cur)
{
if(cur==NULL) return ;
//
Node<elem_Type> *Left=cur->left,*Right=cur->right;
delete cur;

Destroy(Left);
Destroy(Right);
}

template<typename elem_Type>
Tree<elem_Type>::~Tree()
{
Destroy(Head);
}

int main()
{
Tree<int> Avl_tree;
int node;
//cin>>node;
//Avl_tree.ReplaceHead(node);
while(cin>>node)
{
Avl_tree.Insert(node);
}
Avl_tree.Show();
return 0;
}

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧