阅读以下函数说明和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) ;
参考答案:p->left=p->right=NULL (B) p->count++ (C) addtree(p->left,w)
(D) addtree(p->right,w) (E) 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)”。