阅读下列函数说明、图和C代码,回答问题[说明] 在进行文法分析的时候,通常需要检测一个单词是否在
阅读下列函数说明、图和C代码,回答问题
[说明]
在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树。
程序构造一棵二叉排序树,每个节点存储一个单词,按字典序列,较小的在左子树,较大的在右子树。
函数中使用的预定义符号如下:
typedef struct TreeNode{/*二叉排序树节点*/
char *word;
struct TreeNode *left, *right;
}BNODE;
[函数]
int getWord(FILE *fpt, char *word)
/*从文件fpt中读取单词到word中,到达文件结束时返回0*/
{
char c;
c = fgetc(fpt);
if(c == EOF)return 0;
/*跳过单词间的非字母字符*/
while(!(tolower(c) >= 'a' && tolower(c) <= 'z')){
c = fgetc(fpt);
if(c == EOF)return 0;
}
/*不区分大小写*/
while(tolower(c) >= 'a' && tolower(c) <= 'z'){
*word++ = c;
c = fqetc(fpt);
}
*word = '\0';
return 1;
}
void BTree(BNODE **t, char *word)
{
BNODE *ptr, *p;
int compres;
p = NITLL;
(1) ;
while(ptr){
compres = strcmp(word, (2) );
if(!compres){
return;
}else{
(3) ;
ptr = compres > 0 ? ptr->right : ptr->left;
}
}
ptr = (BNODE*)malloc(sizeof ptr);
ptr->left = ptr->right = NULL;
ptr->word = (char*)malloc(strlen(word) + 1);
strcpy(ptr->word, word);
if(p == NULL){
(4) ;
}else if(compres > 0){
p->right = ptr;
}else{
p->left = ptr;
}
}
int main()
{
FILE *fpt;
char word[40];
BNODE *root = NULL;
if((fpt = fopen("text.in", "r")) == NULL){
printf("不能打开文件text.in! \n");
return 1;
}
while(getWord(fpt, word) == 1){
BTree (5) ;
}
fclose(fpt);
return 0;
}
ptr=*t ptr->word p=ptr *t=ptr &root,word
我想用音标记英语单词,我该怎么做?我光看音标能读出单词,但只看单词却不会读,我自己觉得可能是音标和 英语 2020-05-16 …
我想学好初一的单词,怎么知道那个单词怎么读该怎么拼?怎么学会拼读一个不认识的单词怎么才能记好那些不 政治 2020-05-17 …
看到一篇关于日语单词记忆的文章,说是右脑记忆,先把300个单词的读音录下来,再用2-4倍的速度播放 其他 2020-07-11 …
如何读准单词(急,急)怎么样做到读准单词,看着单词的音标,它们的组合让我摸不着头脑,我反复地读,不 其他 2020-07-14 …
英语中单词+edat连读是否读成单词+teg:arrivedat是否读成arrivt 英语 2020-07-15 …
单词量匮乏,怎么通过阅读记单词单词量极其匮乏,基本就没认识的.背单词效率很低,两个小时才记40个,而 语文 2020-11-22 …
下列选项的英语中重读的单词有;不重读的单词有.A.名词,代词;冠词,动词B.名词,形容词;介词,冠词 英语 2020-12-04 …
如何学会拼读英语单词?根据英标,能读出单词发音.一步步的过程,如何学会拼读英语单词?根据英标,能读出 英语 2020-12-04 …
我学英语遇到的问题我是这样自学的,学英标,然后看单词自己去拼读它,接着查看翻译软件对照自己拼读的单词 语文 2020-12-04 …
因为依赖音标读单词,导致我不看音标就读不出单词,只要看了音标就知道怎么读,我想知道具体怎么拼读猜单词 其他 2020-12-04 …