我一直在嘗試編寫後綴trie的C++代碼,但是我希望此代碼能夠跟蹤每個節點上字符或子字符串在後綴trie構造過程中出現的頻率的計數器:記住那我只有4個字符A,C,G和TC++中的後綴Trie
下面的代碼是我嘗試但工作其無法正常工作:
#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,與'''''''cout'它絕對不是C + + –
Christophe