- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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算法说明
输入要求:
输入数据包含几个测试案例。每一个案例有几行组成,每一行都代表了目录树的层次结构。第一行代表目录的根节点。若是目录节点,那么它的孩子节点将在第二行中被列出,同时用一对圆括号“()”界定。同时,如果这些孩子节点中某一个
您可能关注的文档
最近下载
- 义务教育版(2024)三年级全一册 第5课 美化处理图片 教案.docx VIP
- 第七章机械动力学案例.ppt
- 初中数学动点问题专题.doc
- 教科版六年级科学上册7微生物与健康课件.pptx
- 全国中学生物理竞赛复赛实验考查.pdf VIP
- 义务教育版(2024)三年级全一册 第4课 图片记录瞬间 教案.docx VIP
- 医药生物行业研究框架与方法.docx
- 从选题到发表-科学研究应当遵从的诚信规范李真真中国科学院科技咨询战略研究院学部科学规范与伦理研究支撑中心.pptx VIP
- SANKEN三肯变频器samco-NS中大容量 使用手册180409B.pdf
- 新人教版高中数学五本书教材例题课后习题变式含答案1.pdf VIP
文档评论(0)