美文网首页
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自引用结构

    我之前第一次看的时候后面看的不是那么仔细,我嫌进度太慢了.因此我那时候看到这里的时候完全是一脸懵逼的,根本不知道这...

  • 结构体的自引用及相互引用

    来自我的博客minecode.link 在用C来实现数据结构以及部分算法时,经常用到结构体,比如实现树以及树的子节...

  • C语言中结构变量的引用

    结构类型的引用包括对结构变量的引用和对结构变量中成员的引用两个方面a.对结构变量的引用包括1.结构变量的赋值操作2...

  • 2018-12-24

    引用自XXXX网站 引用自XXXX网站 引用自XXXX网站 引用自XXXX网站

  • C语言数据结构-链表大解剖

    链表抽象结构解析 引用、解引用、指针、链表赋值取值 链表抽象结构解析 引用、解引用、指针、链表赋值取值

  • avro源码阅读-写avro文件

    avro文件结构 avro文件格式大致如下(引用自avro官网Specification的Object Conta...

  • iOS结构体和类的区别

    1,语义: 类:引用类型(引用语义),需要自己管理其引用计数、引用值得变化结构体: 值类型(值语义),在设计结构体...

  • JAVA非并发容器--WeakHashMap

    概述 WeakHashMap的存储结构等与HashMap的结构几乎一样,不同指出是其引用是弱引用。 什么是弱引用?...

  • 结构体嵌套

    结构体嵌套 结构体嵌套时应逐级引用

  • 1、this 自引用

    当一个类中的属性和方法里的参数或者局部变量有重名的时候,需要通过this这个关键词来访问初始化对象的实例变量。 例...

网友评论

      本文标题:6.5自引用结构

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