实验五第一题的代码估计其实只需要将课本的改动一下,比如设置一个计数器count就可以使用了。但是非常奇怪的是,在调试的过程中总是出现莫名其妙的错误,根本看不出是什么玩意,代码及报错如下:
<pre name="code" class="cpp">#include<iostream>
using namespace std;
const int k=5;
struct BiNode
{
char data;
BiNode * lchild, * rchild;
};
class BiTree
{
public:
BiTree(){root=creat(root);}
~BiTree(){release(root);}
void preorder(){preorder(root);}
void inorder(){inorder(root);}
void postorder(){postorder(root);}
private:
BiNode * root;
BiNode * creat(BiNode * bt);
void release(BiNode * bt);
void preorder(BiNode * bt);
void inorder(BiNode * bt);
void postorder(BiNode * bt);
};
BiNode * BiTree::creat(BiNode * bt)
{
char ch;int count=0;
cout<<"请输入创建一棵二叉树的结点数据"<<endl;
cin>>ch;
count++;
while(count<k)
{
if(ch=='#') return NULL;
else{
bt=new BiNode;
bt->data=ch;
bt->lchild=creat(bt->lchild);
bt->rchild=creat(bt->rchild);
}
return bt;
}
}
void BiTree::release(BiNode * bt)
{
if(bt!=NULL){
release(bt->lchild);
release(bt->rchild);
delete bt;
}
}
void BiTree::preorder(BiNode * bt)
{
if(bt!=NULL) return;
else{
cout<<bt->data<<" ";
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void BiTree::inorder(BiNode * bt)
{
if(bt!=NULL) return;
else{
inorder(bt->lchild);
cout<<bt->data<<" ";
inorder(bt->rchild);
}
void BiTree::postorder(BiNode * bt)
{
if(bt!=NULL) return;
else{
postorder(bt->lchild);
postorder(bt->rchild);
cout<<bt->data<<" ";
}
}
int main()
{
BiTree T;
cout<<"---------------前序遍历--------------"<<endl;
T.preorder();
cout<<"---------------中序遍历--------------"<<endl;
T.inorder();
cout<<"---------------后序遍历--------------"<<endl;
T.postorder();
cout<<endl;
return 0;
}
报错:
<strong><span style="color:#cc0000;">
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(75) : error C2601: 'postorder' : local function definitions are illegal
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(86) : error C2601: 'main' : local function definitions are illegal
F:\c++文件\新建文件夹 (3)\实验五1.1.cpp(97) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.</span></strong>
<strong>在多次查找解决方案无果之后决定先贴出来再说,之前的几次实验也是因为调试不过去而被删除了,现在想想多少有些鲁莽。总之先看看再说。至于后面的一个实验,将在之后贴出。嗯,之前的几次实验也会在之后补回。</strong>