-2
我發現下面的代碼在網上爲後綴樹這行代碼在這段代碼中做了什麼?
#include <stdio.h>
#define E 0
struct suffix_tree_node;
struct suffix_tree_link {
// 0 is e - global index of during string's end
unsigned long start;
unsigned long end;
suffix_tree_link(suffix_tree_node* source, suffix_tree_node* target,
unsigned long start, unsigned long end) {
this->source = source;
this->target = target;
this->start = start;
this->end = end;
}
suffix_tree_node* source;
suffix_tree_node* target;
suffix_tree_link* next_link;
};
struct suffix_tree_node {
suffix_tree_link* first_link;
suffix_tree_node* parent_node;
suffix_tree_node* suffix_link_node;
// other constructors?
suffix_tree_node() {
parent_node = suffix_link_node = NULL;
first_link = NULL;
}
void add_target(unsigned long start, unsigned long end, suffix_tree_node* target) {
suffix_tree_link* link;
for(link = first_link; link != NULL; link = link->next_link);
link = new suffix_tree_link(this, target, start, end);
}
};
class suffix_tree {
suffix_tree_node* root;
const char* string;
void ukkonen() {
root->add_target(1, E, new suffix_tree_node);
unsigned long e = 1, j_i = 1, i = 1;
for(int i = 0; string[i] != '\0'; i++) {
e++;
for() {
j_star = j;
}
j_i = j_star;
}
}
public:
suffix_tree(const char* string) {
root = new suffix_tree_node();
this->string = string;
ukkonen();
}
};
int main() {
suffix_tree("foof");
return 0;
}
一切都清楚了,幾乎在此代碼,因爲我有很多次閱讀後綴樹,但我不明白這個片段:
void ukkonen() {
root->add_target(1, E, new suffix_tree_node);
unsigned long e = 1, j_i = 1, i = 1;
for(int i = 0; string[i] != '\0'; i++) {
e++;
for() {
j_star = j;
}
j_i = j_star;
}
}
這段代碼做了什麼?
又是什麼for()
?或j_start
?
這裏是a link代碼。
你確定實際編譯? – 2012-03-14 20:13:46
沒有C的親,但如果它的確如此,我會想象它要麼永遠不會進入那個部分,要麼進入一個無限循環......好奇地發現雖然。看起來有一半完成了我的功課。 – Rig 2012-03-14 20:17:12
'for(;;)'是一個無限循環,但我以前從未見過'for()'。 – 2012-03-14 20:19:32