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


    1.树的存储结构说明


    h:该节点所在的高度
    data:文档名
    firstChild:第一个孩子节点
    nextsbling:第一个孩子的兄弟节点

    2.树的函数说明

    2.1 函数概览

    2.2 main函数

    代码:

    整个程序的思路:

    2.3 OutFile函数

    功能:从文件中读取<html>的内容
    

    代码:

    2.4 menu函数

    功能:提供选项并做出选择
    

    代码:

    2.5 PrintTree函数

    功能:按照要求格式输出树结构,通过h控制格式
    

    代码:

    2.6 TraverseTree函数

    功能:在程序结束后将树写入文件
    

    代码:

    2.7 Change函数

    设计思路:根据html文件格式特点转换成括号表达式
    

    代码:


    2.8 PrintFind函数

    设计思路:找到结点输出路径,同时用栈记录走过的路径逆序输出
    

    代码:

    2.9 CreateCSTree函数

    设计思路:先定义一个结构体类型的栈用来储存树的节点,利用用chang函数转换成的括号表达式来进行建树,定义一个count[tag],遍历括号表达式时,每遇到一个 ( tag加一即判断该节点在树的那一层,同时count数组也能让某层次的节点更好的退栈。
    


    2.10 FindNode函数

    设计思路:

    代码:

    2.11 InsertNode函数

    设计思路:查找需要插入的位置,在需要插入的位置上建立一个新的分支即插入的分支。
    

    代码:


    2.12 DeleNode函数

    设计思路:先查找需要删除的节点,如果该节点没有兄弟与孩子节点直接删除,如果该节点存在兄弟节点,在删除该节点的同时,把兄弟节点变为父亲节点的第一个孩子节点,还有一种情况:删除的节点为要删的节点为上一级的兄弟节点,与删除存在兄弟节点的节点方法相类似。
    

    代码:


    2.13 DestroyTree函数

    代码:

    3.树结果演示

    3.1 生成树

    3.2 查找节点

    3.3 插入节点


    3.4删除节点


    4.碰到问题

    • Q1:文件读取结尾多一个字符?
    • A1: 通过再循环内if (infile.eof())break;解决
    • Q2:元素可能有多个子树?
    • A2:通过count[tag]数组计算每个括号内有几个元素
    • Q3:删除结点直接删除当前结点?
    • A3:还要对兄弟,父亲操作,连接相关树

    5.小结

        代码的好与坏:文件的读取写入都只有一次执行,用h记录当前高度,通过count数组解决一个结点下有多个子树的情况,坏处在于先转成括号表达式再建立树,其实可以直接对文件内容操作建立树,但是也有一定好处,相比之下简单易懂,容易处理
        这次大作业对于我们来说收获挺大的,小组中的每个成员都能把自己所理解的分享出来,更好地促进学习,比如:在刚刚看这个题目时,大家都是一头雾水,不知道怎样开头,大家一起想办法,谈论出将文件中的内容转换为括号表达式,这样不仅能够更好的理解题目要求,还能为编写后面的函数省下不少的麻烦。这次的大作业也是一种考验,每个人都有每个人的想法,一个优秀的程序员不仅要会写代码,还要会读懂别人所写的代码,每个人都有每个人的编程习惯,在阅读代码的同时不仅要理解,还要适应他人的编程习惯。尤其时函数的传参,特别考验我们对于他人所写的代码的理解。
    

    6.小组成员分配说明

    小组成员 任务分配
    祝文涛 主函数,建树函数,人员分配
    林硕 转换括号表达式,博客园
    王赐荣 插入函数
    郭坤 文件操作以及树的输出
    郭东阳 查找函数
    吴斌凯 删除函数

    7.小组讨论照片


  • 相关阅读:
    数组和字符串//寻找数组的中心索引
    队列&栈//钥匙和房间
    队列&栈//01 矩阵
    队列&栈//图像渲染
    队列&栈//字符串解码
    队列&栈//用队列实现栈
    队列&栈//二叉树的中序遍历
    队列&栈//目标和
    队列&栈//克隆图
    队列&栈//逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/ls1272397716/p/10849968.html
Copyright © 2020-2023  润新知