这里演示关于字典树的插入删除 查找
字典树的每个节点有26个子节点分别对应26个英文字母 ;每个节点还有个属性表示该节点是否为一个单词(从根节点到盖子节点)
参考http://www.cnblogs.com/archimedes/p/trie-tree.html
#include
using namespace std;
struct Trie
{Trie *next[26];bool isword;
}root;
void insertchar(char* str);//函数声明
bool selectstr(char *str);
void delstr(char* str);
int main()
{insertchar("abc");insertchar("ab");delstr("ab");cout<next[index]==NULL) //表示不存在该字符head->next[index]=new Trie();//不存在则实例化该对象,并返回地址str++; //指针运算 检验下一字符串cout<<*str; head = head->next[index]; //变为下一节点 }head->isword=true;
}
bool selectstr(char *str)
{Trie *head =&root;while(*str){int index=*str-'a';if(head->next[index]==NULL)return false;str++;head=head->next[index];}if(head->isword)return true;elsereturn false;
}
void delstr(char* str)
{Trie* head=&root;while(*str){int index=*str-'a';if(head->next[index]==NULL)return;str++;head=head->next[index];}if(head->isword)head->isword=false;
}