【发布时间】:2020-05-17 06:35:11
【问题描述】:
我已经编写了一个简单的代码来在 C++ 中实现一个 trie 数据结构。但是当我运行这个程序时,它会给出分段错误作为输出。 请大家指正,我哪里错了。
#include <bits/stdc++.h>
using namespace std;
struct trienode {
struct trienode * child[26];
bool isEnd;
trienode()
{
isEnd = false;
for(int i = 0; i < 26; i++)
{
child[i] = NULL;
}
}
};
struct trienode * root;
void insert_str(string &s, int n)
{
trienode * curr = root;
int i;
for(i = 0; i < n; i++)
{
int index = s[i] - 'a';
if(curr -> child[index] == NULL)
{
curr -> child[index] = new trienode();
}
else
{
curr = curr -> child[index];
}
}
curr -> isEnd = true;
}
int main()
{
string s1 = "yash";
insert_str(s1, 4);
}
【问题讨论】:
-
bits/stdc++.h和using namespace std;一样是个大问题。此外,我没有看到分配给根节点的内存。
标签: c++ data-structures trie