Я пытался написать код C++ для суффикса trie, но я хочу, чтобы этот код отслеживал счетчики на каждом узле, как часто появляется символ или подстрока во время суффикса trie construction: учитывая что я работаю только с 4 символов A, C, G и TSuffix Trie in C++
ниже код моя попытка однако ее не работает правильно:
#include<iostream>
#include <string>
#include <stdio.h>
#include <string.h>
using namespace std;
struct SuffixTreeNode{
char c;
struct SuffixTreeNode* one;
struct SuffixTreeNode* two;
struct SuffixTreeNode* three;
struct SuffixTreeNode* four;
//int count;
};
SuffixTreeNode* CreateNode(char ch){
SuffixTreeNode* newnode=new SuffixTreeNode();
newnode->c=ch;
newnode->one=NULL;
newnode->two=NULL;
newnode->three=NULL;
newnode->four=NULL;
//count=0;
}
SuffixTreeNode* Insert(SuffixTreeNode* root,char ch){
if (root==NULL){
root=CreateNode(ch);
}
else if(ch=='a'){
root->one=Insert(root->one,ch);
}
else if(ch=='c'){
root->two=Insert(root->two,ch);
}
else if(ch=='g'){
root->three=Insert(root->three,ch);
}
else if(ch=='t') {
root->four=Insert(root->four,ch);
}
return root;
}
bool Search(SuffixTreeNode* root, int data){
if(root==NULL) return false;
else if (root->c==data) return true;
else if (root->c=='a')return Search(root->one,data);
else if (root->c=='c')return Search(root->two,data);
else if (root->c=='g')return Search(root->three,data);
else return Search(root->four,data);
}
int main(){
SuffixTreeNode* root=NULL;
char str;
root=Insert(root,'a');
root=Insert(root,'c');
root=Insert(root,'c');
root=Insert(root,'t');
root=Insert(root,'a');
root=Insert(root,'g');
cout<<"Enter character to be searched\n";
cin>>str;
if(Search(root,str)==true)cout<<"Found\n";
else cout<<"Not found\n";
}
И как только проскользнул значок C, не так ли? Не добавляйте теги для не связанных, ** разных ** языков. – Olaf
Откровенно «C++» следует удалить. Это не C++ ... Почему вы включаете c и C++ версии заголовков? Также вы действительно хотите c или C++? Он просит использовать объекты. Также на более общем примечании. У вас нет вопроса. Нехорошо сказать: «Вот мой сломан, отлаживайте его» и считается не по теме в разделе: «* Вопросы, требующие помощи по отладке (« почему этот код не работает? ») Должны включать в себя желаемое поведение, конкретную проблемы или ошибки и кратчайший код, необходимый для воспроизведения его в самом вопросе. * «Итак, пожалуйста, помогите другим помочь вам. – luk32
@ luk32 honnestly, с '' '' '' '' '' '' '' '' '' 'окончательно не C –
Christophe