C++ 中的 TRIE 数据结构实现
TRIE data structure implementation in c++
我写了一个简单的代码来用 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);
}
您尚未为根节点分配任何内存。
通常,您将有一个单独的类来处理整个尝试。然后,它可以分配根节点。
class trie
{
public:
trie()
{
root = new trienode();
}
void insert_str(string &s, int n)
{
...
}
private:
trienode* root;
};
int main()
{
trie t;
string s1 = "yash";
t.insert_str(s1, 4);
}
相关文章:
- 如何使用set实现无序数据结构?
- 如何知道用于实现标准代码段的确切数据结构和算法,例如在C++STL中?
- 如何在C++中实现节点数任意的通用树数据结构?
- C++ 中的 TRIE 数据结构实现
- Trie数据结构的实现
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 数据结构实现
- 与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
- C++:如果 std::atomic_flag 是唯一的无锁原子类型,如何在C++中实现无锁数据结构?
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- 我应该使用什么样的数据结构来实现UPGMA
- 我应该如何在恒定长度的 STL 样式数据结构中实现max_size?
- 如何使用 C++ 实现堆数据结构
- 堆栈(数据结构)实现
- 如何实现数据结构,就像C 中的数组一样支持不同的类型元素
- 我需要一个像堆栈一样的数据结构,但具有随机访问,但是,我应该实现什么
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- STL如何用非线性数据结构实现反向迭代器去引用
- 实现数据结构时的智能指针或原始指针
- 将值映射到像素对-如何实现数据结构