程序能运行 怎么到求双亲的时候要调试 不明白
#include"iostream.h"#define maxsize 20
typedef char elemtype;
typedef char tsbnode;
typedef struct //双亲存储结构
{
elemtype data; //数据元素的值
int parent; //双亲结点下标
}pnode; //一个结点结构
typedef struct //孩子链存储结构
{
pnode nodes[maxsize]; //结构体数组,每一个元素有两个成员,data,parent
int num; //树中结点的个数
}psqtree; //树的顺序存储结构类型
void createtree(psqtree &t1) //能进行初始化;即在算法中用双亲数组完成树的存储
{
int i;
for(i=1;i<=t1.num;i++) //依次输入元素的值,初始化数组nodes[]
{
cout<<"输出第"<<i<<"存储元素的值和下标:";
cin>>t1.nodes[i].data;
cin>>t1.nodes[i].parent;
}
}
void gettree(psqtree &t1,elemtype e) //输入任一结点值,求其在数组中的存储位置
{
int i=1;
while(e!=t1.nodes[i].data)
{
i++;
}
if(i>t1.num)
cout<<"无此结点!"<<endl;
else
cout<<i<<endl;
}
void gettreel(psqtree &t1,elemtype e) //输入一结点值,求其双亲
{
int i;
cout<<"输入一结点:";
cin>>e;
while(e!=t1.nodes[i].data)
{
i++;
}
if(t1.nodes[i].data==t1.nodes[0].data)
{
cout<<"此结点为根节点,没有双亲!"<<endl;
}
else
{
if(i>t1.num)
{
cout<<"无此结点!"<<endl;
}
else
{
cout<<"其双亲元素的值为:"<<endl;
cout<<t1.nodes[t1.nodes[i].parent].data<<endl;
}
}
}
void gettree2(psqtree &t1,elemtype e) //输入一结点,求其孩子
{
int i=1;
cout<<"输入一结点:";
cin>>e;
int j=0;
while(t1.nodes[i].data!=e)
{
i++;
}
while(j<t1.num)
{
if(t1.nodes[j].parent==i)
{
cout<<"子结点:"<<t1.nodes[j].data<<endl;
}
j++;
}
}
void main()
{
psqtree t1; //定义树变量
elemtype e;
cout<<"输出结点个数:"; //输入结点个数,初始化num
cin>>t1.num;
createtree(t1);
cout<<"输入任意一结点值:";
cin>>e;
cout<<"存储的位置是:"<<endl;
gettree(t1,e);
gettreel(t1,e);
gettree2(t1,e);
}