我目前正在开发一个trie实现:
我在第三步遇到了麻烦。
你看,我在第三步尝试做的是:
if(root->children[index] == NULL) root->children[index] = makeNewNode();
对于第3步,我已经做了:
root = root->children[index];
它设置root以便它现在是下一个节点
我在这些陈述中犯了什么逻辑错误吗?
typedef struct trieNode
{
bool endOfWord;
// 27 not 26 because an apostrophe also counts as a character
struct trieNode *children[27];
} trieNode;
//Make a new node function prototype.
trieNode* makeNewNode();
trieNode *root;
bool load(const char *dictionary)
{
// open dictionary file
FILE *file = fopen(dictionary, "r");
// check if file opened successfully
if(file == NULL)
{
fprintf(stderr, "Can't open file.\n");
unload();
return false;
}
// initialize root
root = makeNewNode();
char word[LENGTH + 1];
int index = 0;
// load a word in line by line
while(fscanf(file, "%s", word) != EOF)
{
printf("Word loaded %s\n", word);
// scan loaded word character by character
for(int i = 0; i < strlen(word); i++)
{
// remove any capital letters
if(isalpha(word[i]) && isupper(word[i])) tolower(word[i]);
// set current character in word to it's alphabetical index (apostrphes index is 26)
index = word[i] - 'a';
if(word[i] == '\'') index = 26;
printf("Char being searched %c Index %i\n", word[i], index);
// if character does not exist, create a new node and point root to it
if(root->children[index] == NULL) root->children[index] = makeNewNode();
// move to next node
root = root->children[index];
printf("Children's value: %p\n", (void *) root->children[index]);
}
// indicate leaf or end of branch
root->endOfWord = true;
}
// close dictionary
fclose(file);
return true;
}
// function to automate initialization of nodes
trieNode* makeNewNode()
{
// give some space for the new node
struct trieNode* newNode = malloc(sizeof(trieNode));
newNode->endOfWord = false;
// initialize all children pointers to NULL.
for (int i = 0; i < 27; i++) newNode->children[i] = NULL;
return newNode;
}
if(root->children[index] == NULL) root->children[index] = makeNewNode();
// move to next node
root = root->children[index];
您可以在这里修改根
。因此对于下一个单词
,根
将不是实际的根,而是插入数据的最后一个节点。
本文向大家介绍python实现逻辑回归的示例,包括了python实现逻辑回归的示例的使用技巧和注意事项,需要的朋友参考一下 代码 以上就是python实现逻辑回归的示例的详细内容,更多关于python 逻辑回归的资料请关注呐喊教程其它相关文章!
我目前正在哈佛大学做CS50,目标是以最快的方式将字典加载到任何数据结构中。对于这个习题集,我用的是trie。 我的代码背后的逻辑如下: null 但问题是,它在我的其他一些实现中有效,只有在这个实现中,它突然停止工作,并在第一个单词后给了我一个切分错误。正如我所说,我是一个初学者在编码,所以请启发我和批评我的实现!多谢了。 编辑: 我的另一个问题是,为什么在我当前的代码中,它不能检测空终止符\0
我试图创建一个类,它有一个接受温度(以摄氏度为单位)为双值的构造函数,如果温度小于-273.15,则将其设置为-273.15。它还可以计算不同测量单位的其他温度,但这并不重要。由于某种原因,我得到一个逻辑错误,它不能纠正小于-273.15到-273.15的输入。
本文向大家介绍逻辑回归怎么实现多分类相关面试题,主要包含被问及逻辑回归怎么实现多分类时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 方式一:修改逻辑回归的损失函数,使用softmax函数构造模型解决多分类问题,softmax分类模型会有相同于类别数的输出,输出的值为对于样本属于各个类别的概率,最后对于样本进行预测的类型为概率值最高的那个类别。 方式二:根据每个类别都建立一个二分类器,本类别
本文向大家介绍Android程序锁的实现以及逻辑,包括了Android程序锁的实现以及逻辑的使用技巧和注意事项,需要的朋友参考一下 本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个“看门狗”的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码。 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_i
这是我试图实现的:我有ActioBar,我有一个名为登录在ActionBar上的菜单项。当点击这个登录菜单项时,它会在动作栏中添加一个新选项卡,并在父活动的容器中加载带有login_layout的片段。如果我点击任何其他选项卡,登录选项卡就会消失。只有再次点击登录菜单项,它才能重新出现。一旦登录成功,我想将菜单项的标题更改为注销。现在,在将登录菜单项的标题设置为注销后,如果我点击它,它不应该在动作