帮我看看这些代码什么问题啊???
#include <stdio.h> //帮我看看这些代码什么问题啊????????????????
#include <stdlib.h>
typedef int Elem;
typedef struct NTree
{
Elem data;
struct NTree *lchild,*rchild ;
}NTree,*BiTree;
typedef struct PTNode
{
Elem data;
int parent; // 双亲位置域
}PTNode,*PNode;
typedef struct PTree
{
PNode nodes[20];//结点最大数量为20
int n; // 结点个数
}PTree,*Tree;
//
/*******************实现方法如下*********************************/
void addTree(Tree &t,PNode node);
void change(Tree t,BiTree &tree,int &i);
void changeit(Tree t,BiTree &tree,int &i);
//构造双亲结点的树
void InitTree(Tree &t);
void InitTree(Tree &tree)
{
tree=(Tree)malloc(sizeof(Tree));
tree->n=0;
}
void CreateTree(Tree &t)
{
//记录结点的个数;
PTNode *node=NULL;
node=(PTNode*)malloc(sizeof(PTNode));
node->data=1;
node->parent=-1;
printf("%d\n",t->n);
//这里我输出n的值竟然是 3670600!!我附的值是0 啊 ??
//for(int i=0;i<=t->n;i++)
printf("2\n");
addTree(t,node);//1
PTNode *node2=(PTNode*)malloc(sizeof(PTNode));
node2->data=2;
node2->parent=0;
addTree(t,node2);//2
PTNode *node3=(PTNode*)malloc(sizeof(PTNode));
node3->data=3;
node3->parent=0;
addTree(t,node3);//3
PTNode *node4=(PTNode*)malloc(sizeof(PTNode));
node4->data=4;
node4->parent=0;
addTree(t,node4);//4
PTNode *node5=(PTNode*)malloc(sizeof(PTNode));
node5->data=5;
node5->parent=2;
addTree(t,node5);//5
PTNode *node6=(PTNode*)malloc(sizeof(PTNode));
node6->data=6;
node6->parent=2;
addTree(t,node6);//6
PTNode *node8=(PTNode*)malloc(sizeof(PTNode));
node8->data=7;
node8->parent=5;
addTree(t,node8);//7
//建树一共有7个结点
}
void addTree(Tree &t,PNode node)
{
if(node->parent>t->n)
printf("结点信息有错误");
printf("%d\n",t->n);
t->nodes[t->n]->data=node->data; //这里好像不能付给值
t->nodes[t->n]->parent=node->parent;
t->n++;//节点数自增
}
//main函数********************************************************8
void main()
{
Tree t;
InitTree(t);
BiTree T;
//T=(BiTree)malloc(sizeof(BiTree));//这里如果把注释去掉 下面输出n为注释的内容
/* 3670600
3679088
2
3679088 */
printf("%d\n",t->n);
//这里输出的值是 0 但 进入 createTree是 你就变成了 很大的数 见上面注释
CreateTree(t);
ChangeTree(t,T);
Inorder(T,s);
}