1、C语言数据结构树双亲表示法实例分析C语言数据结构树双亲表示法实例分析树状图是一种数据结构,它是由n(n=1)个有限节点组成一个具有层次关系的集合。以下是百分网小编搜索整理的关于C语言数据结构树双亲表示法实例分析,需要的朋友可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!1、树的双亲表示法:树的双亲表示法2、/* bo6-4.c 树的双亲表存储(存储结构由c6-4.h定义)的基本操作(14个) */Status InitTree(PTree *T) /* 操作结果: 构造空树T */(*T).n=0;return OK;void DestroyTree() /* 由于PTree是
2、定长类型,无法销毁 */typedef structint num;TElemType name;QElemType; /* 定义队列元素类型 */#includec3-2.h /* 定义LinkQueue类型 */#includebo3-2.c /* LinkQueue类型的基本操作 */Status CreateTree(PTree *T) /* 操作结果: 构造树T */LinkQueue q;QElemType p,qq;int i=1,j,l;char cMAX_TREE_SIZE; /* 临时存放孩子结点数组 */InitQueue(&q); /* 初始化队列 */printf(请
3、输入根结点(字符型,空格为空): );scanf(%c%*c,&(*T).nodes0.data); /* 根结点序号为0,%*c吃掉回车符 */if(*T).nodes0.data!=Nil) /* 非空树 */(*T).nodes0.parent=-1; /* 根结点无双亲 */qq.name=(*T).nodes0.data;qq.num=0;EnQueue(&q,qq); /* 入队此结点 */while(iDeQueue(&q,&qq); /* 出队一个结点 */printf(请按长幼顺序输入结点%c的所有孩子: ,qq.name);gets(c);l=strlen(c);for(j
4、=0;j(*T).nodesi.data=cj;(*T).nodesi.parent=qq.num;p.name=cj;p.num=i;EnQueue(&q,p); /* 入队此结点 */i+;if(iMAX_TREE_SIZE)printf(结点数超过数组容量);exit(OVERFLOW);(*T).n=i;else(*T).n=0;return OK;#define ClearTree InitTree /* 二者操作相同 */Status TreeEmpty(PTree T) /* 初始条件: 树T存在。操作结果: 若T为空树,则返回TRUE,否则返回FALSE */if(T.n)return FALSE;elsereturn TRUE;int TreeDepth(PTree T) /* 初始条件: 树T存在。操作结果: 返回T的深度 */int k,m,def,max=0;for(k=0;kdef=1; /* 初始化本际点的深度 */m=T.nodesk.parent;while(m!=-1)m=T.nodesm.parent;def+;if(maxmax=def;return max; /* 最大深度 */TElemType
《C语言数据结构树双亲表示法实例分析.doc》由会员分享,可在线阅读,更多相关《C语言数据结构树双亲表示法实例分析.doc(18页范文模板文档)》请在优智文库上查找。