用C ++构建后缀树

时间:2010-02-23 03:09:00

标签: c++ debugging suffix-tree

我正在尝试在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个孩子中的哪个,我正在尝试检查此节点是否已存在。我的Node类是:

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检查有什么问题/我怎样才能检查Node是否没有数据?

1 个答案:

答案 0 :(得分:2)

看起来你根本没有检查iterator的指针NULL,你只是取消引用它(如果它是NULL会导致戏剧性。)

以下是一个要尝试的示例,其中NULL循环检查for已被提升:


void Tree::insert(string ins)
{
    Node* iterator = chooseBranch(root, ins.at(0));
    if (iterator)
    {
        string temp;
        for(int i=0; idata=="")
...