Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Суффіксние дерева пошуку

Реферат Суффіксние дерева пошуку





e)

{

//знайдена 1-я буква (tn1- gt; val [0] == insert_value [0])

{= tn1 ;;

}

}

//знайдена 1-я буква

if (tnl!=zero_node/* 1 gt; val [0] == insert_value [0] * /)

{

//прохід на рівні нижче * tn3=left_tree_raise (tnl, insert_value + 1);

//cout lt; lt; «tn3- gt; val:« lt; lt; tn3- gt; val lt; lt; endl; tn3;

}//букви немає

{

//створюємо нову букву (b, insert_value, 1); * tn4=new node (b);// Конструюємо вузол з одного буквой- gt; parent=root;// Реєстрація засновниками у нащадка gt; lstNode.push_back (tn4);// Реєстрація нащадка у батька

//створюємо перше слово в цій букві * tn5=new node (insert_value + 1);// Копіюємо слово без першої літери

tn5- gt; parent=tn4; - gt; lstNode.push_back (tn5); tn5;

}


}


//якщо tn НЕ NULL - помилка (tn)

{ lt; lt; «The global algorithm error, tree node can not be not NULL !!!" lt; lt; tn- gt; val lt; lt; endl;

} NULL;

}


//обхід слід. рівня (ісп. в додавання вузла) * left_tree_raise (node ??* tn, char * insert_val)

{// створюємо покажчик на порожній вузол * tnl=zero_node; b [MAX_STR]=»»;// Буферна переменнаяeach (node ??* tn1 in tn- gt; lstNode)//цикл по елементах списку у вузлі

{// перевіряємо чи збігається частина слова з значенням у вузлі

if ((! strcmp (tn1- gt; val, insert_val)) || (! strncmp (tn1- gt; val, insert_val, strlen (insert_val))) || (! strncmp (tn1- gt; val, insert_val, strlen (tn1- gt; val))))

{

//cout lt; lt; «System A n»;=tn1 ;;

}

}

//якщо покажчик не так на порожній вузол, то дивимося як

//значення у вузлі збігається зі входять значенням

if (tnl!=zero_node)

{// cout lt; lt; «System B n»; (strlen (insert_val) lt; strlen (tnl- gt; val))//якщо залишок слова менше довжини Рядок у вузлі

{// cout lt; lt; «System C n»; (! Strncmp (tnl- gt; val, insert_val, strlen (insert_val)))//якщо збігається частина рядка

{// cout lt; lt; «System D n»; * tn3=new node (tnl- gt; val + strlen (insert_val));// Cоздан новий вузол із залишком значення зі старого узла- gt; parent=tnl; gt; lstNode.push_back (tn3); (tnl- gt; val, insert_val);

return tn3;

}//створюємо новий вузол

{// cout lt; lt; «System F n»; * tn4=new node (insert_val); - gt; parent=tnl; gt; lstNode.push_back (tn4); tn4;

}

} (! strncmp (tnl- gt; val, insert_val, strlen (tnl- gt; val)))//якщо збігається частина рядка, але довжина рядка у вузлі менше довжини вхідної рядка

{// cout lt; lt; «System E n»;

//якщо кінцевий вузол чи ні збігів

//створюємо новий вузол (tnl- gt; lstNode.empty ())//якщо список у вузлі порожній

{// cout lt; lt; «System I n»; * tn2=new node (insert_val + strlen (tnl- gt; val));// Пересуваємося по слову на довжину значення у вузлі і створюємо вузол

tn2- gt; parent=tnl;// Реєструємося gt; lstNode.push_back (tn2); tn2;

}

{// cout lt; lt; «System L n»;

left_tree_raise (tnl, insert_val + strlen (tnl- gt; val));// Пересуваємося по слову на довжину значення у вузлі, рекурсія

}

}

}//якщо на даному рівні немає збігів, то просто створюємо новий вузол

{// cout lt; lt; «System N n»;

* tn6=new node (insert_val);// Створюємо вузол- gt; parent=tn;// Реєструємося gt; lstNode.push_back (tn6);

return tn6;


} tn;// Все зробили, повертаємо покажчик попереднього вузла


} * find_node (char * find_value, node * tn)

{each (node ??* tn1 in tn- gt; lstNode)//цикл по елементах списку

{

if (strlen (find_value) gt; strlen (tn1- gt; val))//якщо довжина шуканого значення більше довжини значення у вузлі

{// cout...


Назад | сторінка 3 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка Web-додатки з використанням JavaScript каркаса Node.js
  • Реферат на тему: Телекомукаційній вузол
  • Реферат на тему: Балканський вузол
  • Реферат на тему: Аналіз точних сполучень у вузлі
  • Реферат на тему: Вузол підготовкі сировина