练习6-2

首先定义一个结构tnode,其中成员word名字,match匹配情况,以及左右子树的指针.
主函数与原书的没什么大的变化.多了一个获取参数的功能.
判断是否有参数,并且判断参数字符串的首字符是不是'-'.是的话将这个数值复制给变量num.否则默认为6复制给num.
初始化root根节点.
循环体判断式中的getword函数读取单词并保存在word数组中.
然后判断读取的单词首字符是不是字母同时判断这个单词是否达到了字符数的要求.
调用addtreex函数,将根节点root和读取的首个单词word和要求分组的字符数num还有匹配状态变量found传给addtreex函数,返回的是root的指针.
然后用treexprint输出这个二叉树.
看一下addtreex函数的内容.
传入的是空指针的情况.
首先初始化当前节点的内容(现在是根节点).
分配空间,将单词复制给成员.目前匹配状态和初始化左右子树.
然后不是空指针的情况.
通过判断式调用compare函数进行判断.
先进入compare函数看一下.
这个函数有一个地方我想了半天.
if(s == '\0')
这个判断式
t与s前面一样,但是s结束了t后面还有的情况怎么办.
这里是因为外面的for循环体有了一个条件就是
s == t,执行里面判断式的前提条件就是s和t相等,如果不相等就不会执行后面的判断式也不会造成直接返回0.因为s到'\0'而t没到的话for判断式就为假从而结束这个for循环.
如果
s =='\0'为真的话就是说t和s完全一样.所以可以略过,因为这歌程序不计数,只需要输出打印一次就可以.所以只保留一个
.
found = YES;
p->match = YES;
这两个匹配状态理解起来麻烦一点.
首先说found这个匹配状态是为了给下一个节点准备的.
getword读取一个单词后会调用addtreex函数准备将其放入二叉树,然后调用compare对比,(目前单词还没放入二叉树)匹配成功后将p->match也就是已经在树中的那个单词节点的成员变为匹配状态.
然后将found也变为匹配状态(这个匹配状态是为了这个新读入的单词准备的.)
然后再调用addtreex函数将其放入二叉树.
因为这是一个新节点,所以需要创建它,那么这个节点的match成员就通过found进行初始化.
这就是
found的作用.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从匹配中返回值 Match 对象 成功的匹配总是返回一个 Match 对象, 这个对象通常也被放进 $/ 中, (...
    焉知非鱼阅读 1,951评论 0 1
  • 清晨的你踏在残留的月光上 路旁的草随风轻点头 你看见那朵悄悄绽放的二月兰 定知道是我送来的心意 有时候是黄昏 也许...
    阿畔阅读 286评论 4 4
  • 不知道为什么,我跟小美好有一种不解的缘分,它就是很吸引很吸引我,有好几个星期四的晚上都是它陪着我,在手机屏幕后...
    兔子爱吃草莓酱阅读 376评论 0 0
  • 华明,是这学期才转来的学生。说实话,开学两个星期对于他有所了解了之后,我真的喜欢他不起来。一身的坏毛病,学习习惯非...
    思维导图实战派汪静阅读 314评论 0 2
  • 昨日复盘:阅读完成;拉伸未完成;与孩子视频交流完成;上街置办年货完成; 今日目标:完成2017年度总结,制定201...
    amber2040阅读 203评论 0 0

友情链接更多精彩内容