A-A+

阅读以下函数说明和C语言函数 将应填入(n)处的字句写在对应栏内。 [说明] 本程序实现

2022-08-06 00:11:54 问答库 阅读 173 次

问题详情

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数getword(char*filename,char*word)是从指定的文件中得到单词。char*strdup(char*S)是复制S所指向的字符串,并返回复制字符串的地址。
[C程序]
include <stdio.h>
include <ctype.h>
include <string.h>
define MAXWORD 100
struct node {
char*word;
int count;
struct node*left;
struct node*right;
}
struct node*addtree(struct node*P,char*w)
{ int cond;
if(p==NULL){ /*向树中插入结点*/
P=(struct node*)malloc(sizeof(struct node));
P->word=strdup(w);
P->count=1;
(1) ;
}
elseif((oond=strcmp(w,p->word))==0) (2) ;
else if(cond<0)p->left=(3);
else p->right=(4);
return p;
}
main()
{ Struct node*root;
char word[MAXWORD];
root=NULL;
filename="example.dat";
while(getword(filename,word)!=EOF))
root=(5);
}请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:(1) p->left=p->right=NULL (2) p->count++ (3) addtree(p->leftw)(4) addtree(p->rightw) (5) addtree(rootword)
(1) p->left=p->right=NULL (2) p->count++ (3) addtree(p->left,w)(4) addtree(p->right,w) (5) addtree(root,word) 解析:在用二叉树结构来保存指定文件内的单词时,采用递归调用。首先在树中创建一个结点,因此空(1)填“p->left=p->right=NULL”。如果要插入的字符串已经存在,则计数值加1,即空(2)填“p->count++”;如果要插入的字符串小于此结点上字符串的值,则再次调用此函数,即空(3)填“addtree(p->left,w)”;如果要插入的字符串大于此结点上字符串的值,则再次调用函数为空(4),即“addtree(p->right,w)”。在主函数中调用空(5),即“addtree(root,word)”。

考点:函数,字句