您的位置:首页 > 其它

树的双亲存储:

2013-10-28 00:00 316 查看
1.perface:

如下树结构:





若用树的双亲表示法,结果是:树的双亲表示:

0
1
A
2
B
1
3
C
1
4
D
2
5
E
2
6
F
2
7
G
3
8
H
5
9
I
5
2.codes://树的双亲表示法存储:

..h文件:

#ifndef TREE_C_H_
#define TREE_C_H_
/**
*
* **/
//树的存储的、结构:
#define M 10
typedef struct {
char data;    //字符数据
int parent; //父节点
}NODE;
NODE pt[M+1]; //节点数组表示树
/////////////////////////
typedef struct tnode{
int child;
struct tnode *next ; //指向具体的结构的指针
}TNODE;
typedef  struct tablenode{
char data;
TNODE *fchild;//指向第一个孩子的节点
}TD;
TD ct[M+1];
//双亲表示法
void parent_tree(char treedata[M],int m);
//孩子表示方法
void child_tree(char treedata[M],int m);
#endif /*TREE_C_H_*/

.c文件:

/**
* 双亲的表示法
* @m 树中的数据
* */
void parent_tree(char treedata[M], int m) {
//1.去除数据赋值
char c;
int i;
int j;
//初始化的头结点:
pt[0].parent=-1;
pt[0].data=' ';
for (i = 0; i <=m; ++i) {
pt[i].data=treedata[i];
printf("请输入%c的父节点,根的父节点请输入空格\n", pt[i].data);
//显出stdout
fflush(stdout);
c=getchar();
getchar();//

for (j = 0; j < i; ++j) {
if (pt[j].data==c) {
pt[i].parent=j;
}
}
}
//输出
printf("树的双亲表示法:\n");
printf("下表  data   parent\n");
for (i = 0; i <m; ++i) {
printf("data=%d,parant=%d", pt[i].data, pt[i].parent); //打印出对应的ACII
printf("\n");
}
}

3.refence:

看一下存储的角标确实符合,注意,左边打印的是字符编码。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  双亲 存储