DS博客大作业--树 (陈梓灿组)
1.树的存储结构说明
定义的结构体中,name是用于存放文件名称,string类型是字符串类型,定义了child孩子结点和brother兄弟结点。
2.树的函数说明
1.main函数
main函数中主要实现的功能是打开文件并且把功能函数进行拼接(int number没有实质性用处,可以忽略掉)。首先就是对各种变量的定义了,定义文件名,指针,并且对指针进行动态内存分配。接下来打开文件,并且执行建树和插入结点操作。然后输出节点位置并且找出其对应的路径。
2.CreatTree函数
CreatTree函数的功能主要是对main函数中读出的文件名生成一棵数进行存储,首先定义的是catalog和s1变量,s1变量就是对文件名进行读取和存储,是建树操作的主要字符串定义,而catalog的功能就比较玄妙了,它的定义是防止保存完名称之后s1消失,这个在后面调试遇到的问题里面会提到。接下来的index变量是对文件名的读取开关,也就是当循环变量1=index时进行读取,读取到“/"的出现时再停止读取,此时为了读取下一个文件名,把指针后移,也就是index=i+1。由于使用的遍历方法是层次遍历,所以读完之后如果判断brother为NULL,那么就移动至尾部,在读完一层的时候需要把指针指向child也就是下一层。由于最后一个文件的特殊性,没有"/"作为停止开关,所以定义了s2对最后一个文件名的读取和存入,同样的catalog用于防止s2消失。总的来说本函数的主要功能就是读取文件名和建树。
Insert函数
Insert函数的作用是把建好的数插入节点进去,首先进行判断目录名是否存在,若存在直接返回不需要插入,若不存在则进行遍历插入,具体操作如图所示。这个函数相对简单一些,所以不进行太多的介绍。
Print函数
Print函数用于输出节点,使用的方法是递归法则,首先放置一个判断是否到递归口,是则返回,不是则继续递归遍历,使用for循环进行输出空格,使其具有每一个层次,在输出名称,最后进行递归。这个函数的难度在于对空格多少以及递归和space变量的运用,space变量的作用在于判断每个名称之前的空格需要多少。
FindRoad函数
最后一个函数是FindRoad找路径函数,顾名思义就是找到main函数里面输入的文件x并且把它的路径输出,这个函数的判断比较多,首先进行的两个判断,若bt->brother->name为要查找名称,则不输出,因为需要查找的结点与bt->brother在同一层。接下来两个判断同上,运用的是递归,判断的跟上面的两个if是一样的。这个函数刚开始思路错误了,以至于修改了有段时间后面又开始重写,所以耽误的比较长的时间,后面的删除函数也没写下去。
3.树结果演示
4.碰到问题
由于是大作业所以碰到的问题还是蛮多的,首先是各个函数在单独写的时候,出现了不一样的问题。先说说主函数吧,在实现主函数的时候,刚开始定义了很多的变量,应为对函数中的递归不了解,所以用了for循环,但是后面在同学的指导下,直接改成打开文件,然后把相应的函数插进去,不需要再进行其他的操作,也是方便了很多。然后就是Print函数了,这个函数当初设计的时候没有注意到空格的输出,导致层次关系看起来很混乱,之后在百度上查找了相应的代码和分析,重新定义了一个space变量用于决定空格的多少。最后一个就是FindRoad函数了,这个函数在一开始设计的时候思路错误,导致整个树的路径都无法被查找和找到,后面修改了一下,换了一个方向去写, 直接用递归加上判读来实现查找路径,就方便了很多。
5.小结
本次作业好的地方就是代码的运行上,基本的功能都有实现,而且每个函数对应的功能和思路都比较清晰,出现运行错误的地方也比较少,整体的实现方面和代码量方面都是比较好的。不足的地方在于相对有些功能还是可以继续去完善和修改,比如可以增加一个删除节点的函数,这个函数相对其他函数会复杂的多。插入之后也可以写进去一个查看的片段,查看插入之后的树的结构。总之感谢组内的所有同学的辛苦付出,也感谢老师对大作业的肯定和点评。
6.小组成员分配说明
小组成员:陈梓灿(队长)曾俊伟 王鑫杰 张伟龙 林炜 周秋斌 周仁杰
参与内容:
1.main:林炜
2.CreatTree和Insert:陈梓灿 王鑫杰
3.Print:周秋斌 张伟龙
4.FindRoad:曾俊伟 周仁杰
贡献度:主要贡献者 陈梓灿
最后得分:暂时未知
7.photo
DS博客大作业--树 (陈梓灿组)的更多相关文章
- DS博客大作业--树(李天明组)
DS博客大作业--树 大作业博客要求 (10分) 1.树的存储结构说明 .树采用的是链式存储结构. .这段代码中定义了两个结构体.第一个是自定义为Name类型的结构体,里面的成员有字符串str和类型为 ...
- DS博客大作业--树
1.树的存储结构说明 树节点结构体 data:文件名 brother:兄弟节点 child:孩子节点 type:节点的类型,0为文件,1为目录 h:节点所在的层次 2.树的函数说明 头文件 函数1:C ...
- DS博客作业——树
DS博客作业--树 1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会. 在树这一章节,我们学习的是二叉树的算法. 树的构建:一种是直接给树的顺序存储结构的字符串,一种是通过先序遍历和 ...
- DS博客作业08--课程总结
DS博客作业08--课程总结 1.当初你是如何做出选择计算机专业的决定的? 1.1 经过一年学习,你的看法改变了么,为什么? 1.2 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 1. ...
- DS博客作业--07查找
目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...
- DS博客作业05--查找
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业05--查找 这个作业的目标 学习查找的相关结构 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1.1 ...
- DS博客作业03--树
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...
- DS博客作业04--图
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...
- DS博客作业04--树大作业说明
大作业题目说明 1.目录树 按照如下目录路径,设计一颗目录树保存.并能实现对目录树遍历.目录路径存在file.txt,格式如下: b.txt c\ ab\cd.txt a\bc.txt ab\d.tx ...
随机推荐
- 对xxl-job进行simpleTrigger并动态创建任务扩展
业务场景 需求上要求能实现quartz的simpleTrigger任务,同时还需要动态的创建任务而非在控制面板上创建,查阅xxl-job官方文档发现simpelTrigger其暂时还躺在to do l ...
- CentOS7部署HDP3.1.0.0
Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hive.Pig ...
- Nginx默认配置语法
Nginx默认配置语法 1. 我们进入 /etc/nginx/目录下,打开 nginx.conf文件 2. 我们来解析下 这里面标签和各模块的作用 # 设置nginx服务的系统使用用户 user ...
- 1.device-manage 优化
一.当前简介 版本信息 device-manage:v1.0 mysql: 5.6.20 jdk : 1.8 Apache Maven 3.3.3 Spring4.2.5.RELEAS+SpingMV ...
- Linux 文件恢复(XFS & EXT4)
在Linux中,删除rm命令使用需谨慎,有时候可能由于误操作,导致重要文件删除了,这时不要太紧张,操作得当的话,还是可以恢复的. EXT 类型文件恢复 删除一个文件,实际上并不清除inode节点和bl ...
- 【AGC010 C】Cleaning
题意 有一棵 \(n\) 个点的树,第 \(i\) 个节点有 \(a_i\) 个石子. 每次都可以选择一对不同的叶子节点,这对叶子节点路径上的所有点都必须要有石子.然后去掉这两个叶子节点路径上的每个节 ...
- PHP的函数获取图片的宽高等信息
PHP的函数getimagesize可以得到图片的宽高等信息 array getimagesize ( string $filename [, array &$imageinfo ] ) ...
- C#基础再学习
本次观看C#中级教程视频进行对C#一些基础的再度学习,加深印象. 1.对于错误和异常. 错误可能是语法错误也可能是逻辑错误.可以通过断点进行调试. 断点快捷键F9. 异常,通过try catch捕获, ...
- VMware中的桥接模式--来自网络
在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问网内任何一台机器.不过你需要多于一个的IP地址,并且需要手工为虚拟系统配置IP地址.子网掩码,而且还要和宿主机器处于 ...
- nodejs之express入门
首先安装nodejs,官网下载安装包直接安装, 由于node自带npm,所以npm命令直接即可使用 打开cmd,使用npm install -g express-generator安装express ...