DS博客作业04--树大作业

1.树的存储结构说明 ☀

结构体中包含目录名称、文件指针、兄弟指针、孩子指针、以及树的高度。


2.树的函数说明

2.1文件及函数声明

2.2函数说明

2.2.1 mian函数

  • 主要功能:创建树根结点,一行一行地读取文件中的路径并建树,将树打印出来,并显示操作菜单便于实现各项功能。
  • 设计思路:在一个循环结构中,先将建好的树打印出来,然后显示功能菜单,使用者通过输入choice来选择要对树进行的操作。利用循环结构,清屏命令,令使用者可以多次对树进行功能菜单中的操作——查找目录树中的文件、增加新路径、删除结点或子树,并且在进行相关操作后,可以查看树结构的变化。当使用者输入choice=0时,循环结束。


2.2.2 CreatTNode函数

  • 主要功能:创建树结点。
  • 设计思路:在创建一个新结点前,需要用new函数先开辟空间,然后将结点名称赋予结构体成员data,将该结点所位于的层高赋予结构体成员h,最后将其余成员置为空。

2.2.3 GreatPath函数

  • 主要功能:创建路径
  • 设计思路:在main函数中,文件中的路径将被存入字符串中一行一行地读入本函数。
    本函数利用循环结构,读取路径中的每一个字符直到字符串path结束。在循环中,当读入的字符不为'\'时,表示读入的字符是目录名或文件名,利用一个小循环将字符逐个存入str,直到遇到‘\’或path为空,以str为结点名创建新结点。若当前字符为‘\’,表明新结点为目录,将新目录结点根据字母排序插入当前树;若path为空,表明新结点为文件,将新文件结点按字母排序插入当前树。注意在每次循环结束时,应消除每次循环时赋予str的值。


2.2.4 PrintTree函数

  • 主要功能:打印树
  • 设计思路:当层数等于0时,将root下的结点打印出来,当层数不等于0时,利用层数来控制输出树的格式,利用递归将整个树的所有结点打印出来。

2.2.5JudgePath函数

  • 主要功能:判断路径是否存在
  • 设计思路:本函数利用循环结构,读取路径中的每一个字符直到字符串path结束。在循环中,先将出现的字符作为结点名,利用一个小循环存入str,直到遇到‘\’或path为0。若遇到‘\’,表示该结点为目录,历遍该结点的下层的所有目录结点,若不存在与输入路径相同的目录,则return false。若path为0,表示该结点为文件,若不存在与输入路径相同的目录,则return false。循环继续,注意在每次循环结束时,应消除每次循环时赋予str的值。

2.2.6 PrintTree_inFile函数

  • 主要功能:将操作后的目录以树的形式写入tree.txt文件中。
  • 设计思路:过程与输出树的差不多,将输出改为写入文件。

2.2.7SeekPath函数

  • 主要功能:查找目录树的文件并保存路径,并判断路径是否存在
  • 设计思路:利用递归,从树的叶子结点找起,若遇到结点名与目标文件名相同,将当前树结点入栈,若遇到比栈顶树结点的层数要低的树结点,也将其入栈。若没遇到结点名与目标文件名相同则return false。

2.2.8SeekTNode函数

  • 主要功能:判断结点是否存在
  • 设计思路:利用递归,层层深入查找。

2.2.9DeleteTNode函数

  • 主要功能:实现树结点的删除
  • 设计思路:利用递归,找目标结点后,删除其分支。

3.树结果演示

3.1主页面

3.2查找目录树中的文件演示

3.3查找目录树中不存在的文件演示

3.4添加新路径演示

3.5添加已有路径演示


4.碰到问题

  • Q1:
    调试过程中一直出现空指针的错误,老是调试调试着就卡了
  • R1:
    因为没有对结点申请空间,就进行操作,导致访问权限越界,
  • A1:
    进行节点申请空间(new)
  • Q2:
    输出目录树并且把它写进文件里,这个部分也碰到了问题,一开始用空格代替那个格式进行控制,然后用递归,发现不是很懂递归口怎么写才能让它输出目录后,输出里面的文件,而不是继续输出目录
  • A2:
    已解决

5.小结

本次树大作业采用小组形式进行,能力较弱的同学可以在与大佬讨论的过程中学到不少有用经验,通过阅读他人的代码,来改进自己以往编程时不太高明的做法。
我们组完成的是目录树,先设计好结构体,制定一个框架,然后再逐步完善各个函数。了解如何使用好递归口是写代码过程中重要的一点,函数的命名,适当添加注释更是重中之重。


6.小组成员分配说明

小组成员 参与内容 贡献度 最后得分
黄雅静 写代码 kkk kkk
赖慧颖 写代码 kkk kkk
钟海清 写框架 kkk kkk
杨鸿漾 ppt展示 kkk kkk
闫栩宁 博客园 kkk kkk
程建君 博客园 kkk kkk

posted @ 2019-05-11 19:58  chianun  阅读(281)  评论(0编辑  收藏  举报