数据结构课程设计 形目录结构.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计 形目录结构

数据结构课程设计实验树的遍历,文件目录结构的显示实验报告一、简介树型结构是一类十分重要的非线性结构,它可以很好地描述客观世界中广泛存在的具有分支关系或层次特性的对象,如操作系统的文件构成、人工智能搜索算法的模型表示以及数据库系统的信息组织形式等。文件的目录结构是树型结构在计算机操作系统的典型应用。通过树型结构可以直观且清晰的表明操作系统中的文件组织结构。用户可通过树型结构显示的文件目录列表找到自己想访问的内容。本实验的要求在给出Unix下目录和文件信息的前提下,编程实现将其排列成一棵具有一定缩进的树。具体要求如下:输入要求输入数据包含几个测试案例。每一个案例由几行组成,每以行都代表了目录树的层次结构。第一行代表目录的根节点。若是目录节点,那么它的孩子节点将在第二行中被输出,同时用一对圆括号“()”界定。同样,如果这些孩子节点中某一个也是目录的话,那么这个目录所包含的内容将在随后的一行中列出,由一对圆括号将首尾界定。目录的输入格式为:*nams size,文件的输入格式为:name size,其中*代表当前节点是目录,name代表文件或目录的名称,由一串长度不大于10的字符组成,并且name字符串中不能含有‘(’,‘)’,‘[’,‘]’和‘*’。size是该文件/目录的大小,为一个大于0的整数。每一个案例中最多只能包含10层,每一层最多有10个文件/目录。输出要求对每一个测试案例,输出时要求:第d层的文件/目录名前面需要插入8*d个空格,兄弟节点之间要在同一列上。不要使用Tab(制表符)来统一输出的缩进。每一个目录的大小(size)是它所包含的所有子目录和文件大小以及它自身大小的总和。有输入/输出样例如下:输入样例:*/usr 1(*mark 1 *alex 1)(hw.c 3 *course 1)(hw.c 5)(aa.txt 12)*/usr 1()输出样例:|_*/usr[24] |_*mark[17] | |_hw.c[3] | |_*course[13]|_aa.txt[12] |_*alex[6] |_hw.c[5]|_*usr[1]因此,实验任务如下:(1)读入给定的Unix目录和文件信息。(2)建立树型链表以表示目录和文件结构,同时重新计算目录大小(3)以树型结构输出文件信息。二、设计说明2.1、数据结构实现目录结构是一种典型的树形结构,可以选择孩子兄弟双亲链表来储存树的结构。孩子兄弟双亲链表是一种典型的树的存储结构。在该表示方法中,链表中节点的三个指针域分别指向该节点的父亲、第一个孩子节点和下一个兄弟节点,分别命名为Parent域,FirstChild域和NextSibling域。在孩子兄弟双亲链表表示法中,节点形式统一,节点间的联系比较简洁。同时,在这种存储结构上容易实现树数据结构的大多数运算。因此,孩子兄弟双亲链表表示是树的一种实用的储存结构。其节点形式如下:本题中采用面向对象的方式实现树型结构。构建Tree类,将所有的目录作为Tree类的对象。Tree类定义如下:class Tree{string Name; //树的根节点名称int Size;//树的大小,用于统计树本身及其子数大小的总和Tree* FirstChild;//指向他的第一个孩子节点Tree* NextSibling;//指向下一个兄弟节点Tree* Parent;//指向父节点public:Tree (string Name=””,int Size=0);//构造函数void parse();//根据输入数据建立树型结构void reSize();//重新统计树节点的大小void outPut();//输出函数~Tree();//析构函数};2.2、主要函数的实现在Tree类中共定义了5个函数,即构造树(Tree()构造函数),销毁树(~Tree()析构函数),目录大小计算(reSize()函数),建立树型链表结构(parse()函数)和树型结构输出(outPut()函数)。下面分别说明如下:2.2.1构造函数构造函数的作用是建立一个只有一个节点的树,其三个指针域均为空,以方便接下来目录结构的读入和树型链表的构建。函数实现如下:Tree::Tree(string Name, int Size){this-Name = Name;this-Size = Size;FirstChild = NULL;//FirstChild域置空NextSibling = NULL;//NextSibling域置空parent = NULL;//Parent域置空}2.2.2析构函数析构函数的作用是删除同一个根节点下的各个子节点,以释放空间。函数实现如下:Tree::~Tree(){Tree* temp;Tree* temp1;temp =

文档评论(0)

yuerang3062 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档