#大做业博客要求 (10分)函数
##1.树的存储结构说明spa
.树采用的是链式存储结构。 .这段代码中定义了两个结构体。第一个是自定义为Name类型的结构体,里面的成员有字符串str和类型为整型的判断变量flag(判断是目录名仍是文件)。 第二个结构体自定义为BTNode类型,里面的成员有Name类型的data(用于存放树结点),还有两个结构体指针分别指向兄弟结点和孩子结点。
###1.1头文件1TreeNode.h设计
(定义结构体)3d
###1.2.头文件2 TreeFunction.h指针
(声明函数,方便后续函数使用时的调用)code
###1.3.其余两个文件:tree.cpp、input.cpp里包含的内容都是对各类函数功能的实现blog
##2.树的函数说明排序
###主函数.main.cpp递归
定义变量,控制输出输入的内容等
###函数1.BTree ReadFile()函数字符串
.功能:读取file文件和建立树结点。 .设计思路:定义一个字符串用来存从文件中读取出来的字符,同时调用另外一个函数建立树结点,最后将BT返回主函数。
###函数2. void CreateNode(BTree &BT, string name)
.功能:建立树结点。 .设计思路:对字符串一段一段判断,以\和\0做为中止的点,定义flag用于区分插入位置,定义judge用来判断是否找到插入位置,定义一个结构名pre,根据name[i]是否是文件对pre.flag进行赋值,而后再根据它是文件仍是目录进行建立结点
###函数3.void PrintTree(BTree BT, int k)
.功能:输出树。 .设计思路:遍历树中全部结点,判断该结点是否是文件,如果文件,则以该树的兄弟树做为递归出口按照格式输出树,若不是,则以该树的孩子树做为递归出口按照格式输出树
###函数4.void FindRoute(BTree &BT,int &flag,vector <string> &s,string name)
.功能:查找路径。 .设计思路:用兄弟孩子树作递归出口。比较name与data.str的大小关系,若相等 ,说明找到该文件,而后在目录树中寻找路径,并把它按照格式输出。
###函数5.void DeleteNode(BTree &BT)
.功能:删除数据 .设计思路:以读取的方式打开文件,查找是否有须要删除的结点,若找不到,则输出找不到此目录,不然,用链式结构的方式删除所系结点,并写入文件,达到删除目录的目的。
###函数6.void IncreaseNode(BTree &BT)
.功能:增长数据 .设计思路:定义一个Data,把须要增长的目录名赋给Data中的str,而后再与树中的str进行比较,若相等,则输出“已存在”,不然,调用Tool函数插入该结点。
###函数7.void FileWrite(BTree BT,ofstream &write,vector<string> &s)
.功能:修改文件 .设计思路:判断树的孩子结点是否为空,不为空时,把字符串存在vector里,再递归调用该函数自己,用于有共同路径的数据输到文件 。
###函数8.int Tool(Name pre, BTree &Head, BTree &T, int flag)
.功能:有序地插入结点 .设计思路:判断该结点是文件仍是目录,并比较str的大小 ,创建一个新结点,若为文件,把树T看成该结点的孩子 ,不然,把它看成该结点的兄弟。而后再根据已经查找所要插入的位置进行插入。
##3.树结果演示
###3.1.生成目录树
根据file.txt中的文件路径,生成一颗对应的目录树,并把树结构保存在tree.txt中。目录树中,孩子节点从左到右按照字符串字典序排序。
###3.2.查找目录
输入一个文件名,能在目录树查找其路径,并把查找路径按照格式输出。
###3.3.删除目录
输入一个删除目录,能把该节点及其全部分支都删除.更新tree.txt
###3.4.增长目录
输入一个新路径,若该路径不存在,能在树中插入一个新分支。并更新tree.txt
##4.碰到问题
##5.小结
.好的地方:结构体简洁明了,可读性好。功能比较完善。 函数都主要分装在一个文件里,概括性强。 .须要改进的地方:暂无发现太大问题
##6.小组成员分配说明
##7.展现大家讨论的照片