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