DS博客大作业--树

大作业博客要求 (10分)

1.树的存储结构说明

.树采用的是链式存储结构。
.这段代码中定义了两个结构体。第一个是自定义为Name类型的结构体,里面的成员有字符串str和类型为整型的判断变量flag(判断是目录名还是文件)。
第二个结构体自定义为BTNode类型,里面的成员有Name类型的data(用于存放树结点),还有两个结构体指针分别指向兄弟结点和孩子结点。

1.1头文件1TreeNode.h

(定义结构体)

1.2.头文件2 TreeFunction.h

(声明函数,方便后续函数使用时的调用)

1.3.其他两个文件:tree.cpp、input.cpp里包含的内容都是对各种函数功能的实现

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 &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 &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.碰到问题

  • Q1: 区分文件跟txt。
  • A1: 在结构体中增加一个变量。
  • Q2: 孩子结点排序混乱。
  • A2: 采用分段查找法,找到插入位置然后调用Tool函数插入结点,保证孩子结点有序。
  • Q3: 增加目录时,查找插入的位置。
  • A3: 用compear比较树中的str与Data中的str的大小,若都相等则该目录已存在,否找找到插入位置。

5.小结

.好的地方:结构体简洁明了,可读性好。功能比较完善。
函数都主要分装在一个文件里,归纳性强。
.需要改进的地方:暂无发现太大问题

6.小组成员分配说明

7.展示你们讨论的照片






转载于:https://www.cnblogs.com/Gejkdj/p/10849485.html

DS博客大作业--树(李天明组)相关推荐

  1. DS博客大作业--树

    1.树的存储结构说明 树节点结构体 data:文件名 brother:兄弟节点 child:孩子节点 type:节点的类型,0为文件,1为目录 h:节点所在的层次 2.树的函数说明 头文件 函数1:C ...

  2. DS博客大作业--树 (陈梓灿组)

    1.树的存储结构说明 定义的结构体中,name是用于存放文件名称,string类型是字符串类型,定义了child孩子结点和brother兄弟结点. 2.树的函数说明 1.main函数 main函数中主 ...

  3. DS博客作业03--栈和队列

    DS博客作业03--栈和队列 1.本周学习总结(0--1分) 谈谈你对栈和队列结构的认识及学习体会. 这章有认真预习,但做题还要依靠书,记不住,可能还需要多加练习,在PTA上的题只做了栈的,队列的做得 ...

  4. OO第三次博客总结作业

    OO第三次博客总结作业 1.规格化设计的大致发展历史和为什么得到了人们的重视  发展历史...上网搜索了一圈...什么都没搜索到,只能谈谈自己对规格化设计重要性的一些看法. 规格化设计,顾名思义,是有 ...

  5. 利用博客提交作业的程序设计课程实践模式

    (本文基于本人近三年来的工作写成,发表于<计算机教育>2014年第18期) 利用博客提交作业的程序设计课程实践模式 贺利坚  卢云宏 (烟台大学 计算机学院,山东 烟台 264005)  ...

  6. 从团购网的漏洞看网站安全性问题 -- 安全 -- IT技术博客大学习 -- 共学习 共进步!...

    从团购网的漏洞看网站安全性问题 -- 安全 -- IT技术博客大学习 -- 共学习 共进步!: "" (Via.) 转载于:https://www.cnblogs.com/devo ...

  7. c语言数据结构大作业,数据结构大作业——树(和广义表)

    数据结构大作业--树(和广义表) 以广义表形式输入一棵树,然后以合适的比例将这棵树展示出来 (如何构造一个广义表已经略去) 对于广义表化的树,我们采用的树节点类似二叉链表形式的存储. 首先设计结点内容 ...

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

    1.树的存储结构 本组采用的树的存储结构为链式结构,选择如图所示的结构体 Name为结点的名称 LevelNum为孩子节点的个数 *Children[20]用来指向不同的孩子结点(类似于二叉树的结构体 ...

  9. DS博客作业07--查找

    1.本周学习总结(0--2分) 1.1.思维导图 1.2谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 本周要求挑3道题目写设计思路.调试过程.设计思路用伪代码描述.题目选做要求: 原 ...

最新文章

  1. 刀片服务器提升三要点
  2. 2019年六大新兴信息安全方向
  3. it程序员刷题 面试 中文网站收集
  4. android应用中插入admob广告
  5. SwiftUI之深入解析如何创建和组合视图
  6. 【牛客 - 373B】666RPG(线性计数dp)
  7. html5开发app的缺点,全解HTML 5在移动Web应用的优劣势
  8. springboot运行在eclipse报异常的问题
  9. java 高级工程师面试题集锦,持续更新~
  10. symantec linux版命令,Symantec Backup Exec Agent for Linux详细安装方法
  11. 分享CFA一级考试干货
  12. 使用Nodejs+puppeteer 批量保存网页为图片或PDF
  13. Latex角标 左侧角标 左上角角标 左下角角标
  14. 计算机监控系统在地铁中的应用有哪些,电力监控系统(PSCADA)在地铁中应用.doc
  15. 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
  16. vuepress-theme-reco@1.x 解决博客首页 与 仓库README不兼容问题
  17. QQ机器人——基于python以及qqbot模块
  18. 计算机无法识别出cd驱动器,迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?【图解】...
  19. 前端知识合集【重中之重】,我只看这一篇!
  20. java打开浏览器_Java调用浏览器打开网页完整实例

热门文章

  1. PHP 文件以及目录操作
  2. 如何监控oracle的索引是否使用
  3. 1. JanusGraph的优势
  4. RedHat发布JBoss 7.2,完全支持Java EE 8规范
  5. Android Studio 修改包名 com.example.calculator-----gt;com.melon.calculator
  6. 深圳行:1207-Day 1 - 到达
  7. 01 Angular
  8. 我的php学习笔记(45) PHP输出CSV、Excel
  9. linux内核阅读感悟,读Kernel感悟-Linux内核启动-从hello world说起
  10. 数据结构研究 ----单链表的按序号查找