1 #include<stdio.h>
2 #include<stdlib.h>
3 #define MAX_SIZE 50
4 typedef char ElemType;
5
6 typedef struct BiTNode //结点的结构
7 {
8 ElemType data;
9 int parent;
10 }BiTNode;
11 /*存储在静态的链表中*/
12 typedef struct
13 {
14 BiTNode node[MAX_SIZE];
15 int n; //结点的个数
16 }Bitree;
17
18 void InitBiTree(Bitree *T);
19
20 int Findparent(Bitree T,int e);
21
22 void Root(Bitree T);
23
24 int main()
25 {
26 Bitree T;
27 T.n=0;
28 int e;
29
30 printf("\n函数InitBiTree测试\n");
31 {
32 printf("初始化树T\n");
33 InitBiTree(&T);
34 printf("\n");
35
36 }
37 printf("\n函数Findparent测试\n");
38 {
39 int Parent;
40 printf("请输入需要查询的结点\n");
41 scanf("%d",&e);
42 Parent=Findparent(T,e);
43 printf("序号为%d的%c双亲是:",e,T.node[e].data);
44
45 printf("序号为%d的%c",Parent,T.node[Parent].data);
46 printf("\n");
47
48 }
49
50 }
51
52 void InitBiTree(Bitree *T){
53
54 int i,j,m;
55 char ch;
56 printf("请输入结点个数:\n");
57 scanf("%d",&m);
58 T->n=m; //不是二重指针
59 printf("请输入结点的值和其双亲的序号:\n");
60
61 for(i=0;i<T->n;i++)
62 {
63 getchar();//!!!会把回车直接读进去
64 scanf("%c,%d",&ch,&j);
65 T->node[i].data=ch;
66 T->node[i].parent=j;
67
68 }
69
70 }
71
72 int Findparent(Bitree T,int e){
73 if(e==0){
74 printf("根节点没有parent");
75 exit(-1);
76 }
77 else
78 return T.node[e].parent;
79 }