Построение дерева суффиксов в C ++ - PullRequest
3 голосов
/ 23 февраля 2010

Я пытаюсь построить дерево суффиксов в 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 / как еще я могу проверить, если узел не имеет данных?

1 Ответ

2 голосов
/ 23 февраля 2010

Не похоже, что вы вообще проверяете указатель 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=="")
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...