3
我试图建立在C后缀树++作为基因测序在C++构建后缀树
void Tree::insert(string ins)
{
Node* iterator = chooseBranch(root, ins.at(0));
string temp;
for(int i=0; i<100; i++)
{
if(iterator->data=="")
.
.
.
chooseBranch()
的任务的一部分是选择去这4个孩子的功能,我试图检查这个节点是否已经存在。我的节点类:
struct Node{
Node();
string data;
Node* A;
Node* G;
Node* C;
Node* T;
};
这个if语句是给我一个段错误,我用gdb回溯到:
#0 0x0000003ce249bbd6 in std::string::compare() from /usr/lib64/libstdc++.so.6
#1 0x000000000040185b in std::operator==<char, std::char_traits<char>, std::allocator<char> >()
#2 0x0000000000401305 in Tree::insert()
#3 0x00000000004016d4 in Tree::Tree()
#4 0x00000000004010a2 in main()
有什么不对这种形式NULL检查的/是怎么回事我能检查节点是否没有数据?
酷。 Farach? Ukkonen? – 2010-02-23 03:11:29
它看起来并不像是在检查NULL - 你只是取消指针“迭代器”。也许修改你的if语句为“if(iterator && iterator-> data.empty())”。顺便说一句,你的输入字符串“ins”可能是空的,在这种情况下ins.at(0)会抛出一个异常。 – 2010-02-23 03:20:02
为什么不使用这个http://code.google.com/p/patl – 2010-02-23 03:22:13