title: what does this line do in this code?
body: <p>i have found  following code on online   for suffix tree</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #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-&gt;source = source;
          this-&gt;target = target;
          this-&gt;start = start;
          this-&gt;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-&gt;next_link);
          link = new suffix_tree_link(this, target, start, end);
      }
  
  };
  
  
  
  class suffix_tree {
  
      suffix_tree_node* root;
      const char* string;
  
      void ukkonen() {
          root-&gt;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-&gt;string = string;
          ukkonen();
      }
  
  };
  
  int main() {
      suffix_tree("foof");
      return 0;
  }
  </code></pre>
  
  <p>everything is clear   almost in this code,because i have read   about suffix tree   many times before,but i did not  understand  this  fragment:</p>
  
  <pre><code>void ukkonen() {
              root-&gt;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;
              }
          }
  </code></pre>
  
  <p>what does this code do?</p>
  
  <p>also what is <code>for()</code>? or <code>j_start</code>?</p>
  
  <p>here is <a href="https://github.com/qumon/da_labs/blob/a59083eac127aedf56b9fdfef27a0d63ce7af6bf/lab5.3.cpp" rel="nofollow">a link</a> for this code.</p>