树的遍历:文件目录结构的显示.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
树的遍历:文件目录结构的显示

数据结构课程设计报告 树的遍历: 文件目录结构的显示 专业 计算机科学与技术 学生姓名 杜攀 班级 BM计算机091 学号 0951401108 指导教师 吴 素 芹 起止日期 2011.1.10-2011.1.14 目 录 1 简介 1 2算法说明 4 3测试结果 5 4分析与探讨 6 5小结 8 参考文献 9 附 录 10 附录1 源程序清单 10 树的遍历:文件目录结构的显示 1 简介 1.树形结构 树形结构是一类十分重要的非线性结构,它可以很好地描述客观世界中广泛存在的具体分支关系或层次特性的对象,如操作系统的文件构成、人工智能搜索算法的模型表示以及数据库系统的信息组织形式等。 树的一种参考定义为:树是n(n0)个节点的有穷集合,满足以下条件: 有且仅有一个称为根(Root)的节点。 其余节点分为m(m≥0)个互不相交的非空集合T1,T2,…,Tm,而这些集合本身都是一棵树,称为根的子树(SubTree)。例如在图2.2中,总共有11个节点,其中A是根节点,B,C,D分别A下面的子树,B子树包含子集{E,F,G},C子树包含{H},D子树包含{I,J,K}。B、C、D有共同的父节点A,因此称为兄弟节点。 图2.2 树的示例 2.树的存储结构和树的遍历 (1)三种常用的树的存储结构。 双亲表示法:双亲表示的存储方法利用了每个节点都只有唯一的双亲(父节点)的性质(除根节点以外)。在双亲表示法下,每个存储点由两个域组成:数据域——用语存储树上节点中的数据元素;指针域——用于指示本节点所在的存储节点。其形式如下: Typedef struct{ ElemType data; Int parent; }TreeNode; 在存储整棵树的时候,可以利用一维数组,同时设置两个参数,用来表示根的位置和节点数,其形式如下: Typedef struct{ TreeNode nodes[MAX_SIZE]; Int root,num; }Tree; 例如,表2.2表示的是双亲表示的图2.2中树的存储结构。 表2.2 图2.2中树的双亲表示存储结构 数组下标 节点名称 对应的双亲节点下标 0 A -1 1 B 0 2 C 0 3 D 0 4 E 1 5 F 1 6 G 1 7 H 2 8 I 3 9 J 3 10 K 8 孩子链表表示法:树的双亲表示方法在求节点的孩子时需要遍历整个结构,而孩子链表表示法则便于设计对孩子节点的操作。它的实现方法是:把每个节点的孩子节点排列起来,看成是一个线性表,且以单链表作为存储结构,那么n个节点的树将有n个孩子链表;而n个头指针又组成一个线性表,线性表可以采用顺序存储结构。图2.3表示的是图2.2中树的孩子链表表示。 typedef struct ChildNode{ int child; struct ChildNode*next; }*ChildPtr; typedef struct{ ElemType data; ChildPtr firstchildr; }CTBox; typedef struct{ CTBox nodes[MAX_TREE_SIZE]; int n,r; }CTree; 孩子兄弟双链表表示法:孩子兄弟双亲表示方法中,链表中节点的三个指针域分别指向该节点的父亲点、第一孩子节点和下一兄弟节点,分别命名为Parent域,FirstChild域和NextSibling域。 图2.4表示的是图2.2中树的孩子兄弟双亲链表表示。 Typedef struct TreeNode{ ElemType data; struct TreeNode*FirstChild,*NextSibling,*Parent; }TreeNode,*Tree; 孩子双亲链表的节点形式: *FirstChild data *NextSibling *Parent 图2.4 图2.2中树的孩子兄弟双亲链表表示 2算法说明 输入要求: 输入数据包含几个测试案例。每一个案例有几行组成,每一行都代表了目录树的层次结构。第一行代表目录的根节点。若是目录节点,那么它的孩子节点将在第二行中被列出,同时用一对圆括号“()”界定。同时,如果这些孩子节点中某一个

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档