美文网首页
6.5自引用结构

6.5自引用结构

作者: Hy_Slin | 来源:发表于2018-02-11 14:06 被阅读0次

    我之前第一次看的时候后面看的不是那么仔细,我嫌进度太慢了.因此我那时候看到这里的时候完全是一脸懵逼的,根本不知道这里写的是什么了.乱七八糟的.
    但是这次不同,这次应该是第三次看,看的非常仔细每一个细节都弄懂,到现在.看的时候没什么难度.非常顺畅.
    所以学新知识耐心还是比较重要的.

    主函数暂时没什么需要说的.
    通过getword读取单词.然后判断首字符是否是字母.
    然后就是addtree函数和treeprint函数.
    所以先看addtree函数.

    talloc函数就是返回一个具有tnode结构大小并指向tnode结构的指针.(就是这个指针可以容纳这个结构.)
    strdup函数就是将传入的参数复制到另一个地方,(具体什么用后面再看.)

    adtree函数.
    首先判断是不是新单词,判断是不是空指针,因为每个已经记录的单词都有地址而不是空指针,每个单词的下方都有两个空地址.
    空指针的情况下将各个成员赋值.
    如果不是空指针,那么就判断指针的成员与当前的这个参数用strcmp进行比较.并将对比结果复制到cond中.
    匹配的话(strcmp函数的返回值为0)将计数成员+1.
    小于或者大于这个成员进入左子树或右子书.
    这个是递归的.
    进入左右子树还会进行同样的判断.
    判断是否是空指针,然后对比当前成员或进入左子树或右子树.
    这几个判断式只执行一个,执行完后会返回当前的指针给上一级.
    上一级会将这个指针放在当前这个节点的记录左右子树的成员中.
    递归只用于查找,左右子树的指针只在上一级中.
    最后将最上层的两个子树放入主函数的root中.

    然后调用treeprint输出.
    这个说出来会很复杂,试试吧.看上面的图能理解的快一些.
    它首先递归调用到最左侧的那个节点a.
    然后再向下判断的时候它的左子树是空的,判断式不通过,退出这个函数.回到节点a.
    第一条语句完成.
    第二条语句是打印节点a的内容.
    然后进入节点a的右子树,如果存在的话还是进入这个右子树的左子树,这个右子树的左子树不存在的话输出这个节点a的右子树然后去找这个节点a的右子树的右子树,没有的话返回节点a然后再返回上级.
    语言很难表达这么复杂的逻辑情况.看图理解能方便一些.

    相关文章

      网友评论

          本文标题:6.5自引用结构

          本文链接:https://www.haomeiwen.com/subject/ubdplxtx.html