如何解决检查单词是否与搜索单词匹配的功能
我有以下可行的方法,但想知道是否有更好的方法。更好的意思是更有效和或更紧凑。
bool check(const char *word)
{
int nodeIdx = hash(word);
if (nodeIdx < 0)return false;
nodeWords * searchNode;
searchNode = nodeArray[nodeIdx]; //nodeArray is global
bool whileFlag = true,returnFlag = false;
do
{
if (strcmp(word,searchNode->word) == 0 )
{
whileFlag = false;
returnFlag = true;
}
else if (strcmp(word,searchNode->word) < 0 )
{
if(searchNode->left == NULL)
{
whileFlag = false;
}else{
searchNode = searchNode->left;
}
}else{
if(searchNode->right == NULL)
{
whileFlag = false;
}else{
searchNode = searchNode->right;
}
}
}while (whileFlag);
free(searchNode);
return returnFlag;
}
例如,我们可以这样重写函数:
bool check(const char *word)
{
int nodeIdx = hash(word);
if (nodeIdx < 0)return false;
nodeWords * searchNode;
searchNode = nodeArray[nodeIdx];
bool returnFlag = false;
do
{
if (strcmp(word,searchNode->word) == 0 )returnFlag = true;
else if (strcmp(word,searchNode->word) < 0 && searchNode->left != NULL) searchNode = searchNode->left;
else if (strcmp(word,searchNode->word) > 0 && searchNode->right != NULL) searchNode = searchNode->right;
}while (searchNode->left != NULL || searchNode->right != NULL || strcmp(word,searchNode->word) == 0);
return returnFlag;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。