码迷,mamicode.com
首页 > 其他好文 > 详细

模板——字典树Trie Tree

时间:2017-07-24 21:30:37      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:malloc   ret   相同   roo   for   怎么办   trie tree   root   cpp   

  /*字典序模板*/
  #define MAX 26 //每层有多少种类
  typedef struct trie
  {
      trie *next[MAX];
      int v;//一个字典树到此有多少相同前缀的数目
  };
  trie *root;
  void creat_trie(char *str)
  {
      int len=strlen(str);
      trie *p=root,*q;
      for(int i=0;i<len;i++) 
      {
          int id=str[i]-‘a‘;
          if(p->next[id]==NULL)
          {
              q=(trie*)malloc(sizeof(trie));
              q->v=1;
              for(int j=0;j<MAX;j++)
                q->next[j]=NULL;
                
              p->next[id]=q;
              p=p->next[id];
          }
          else
          {
              p->next[id]->v++;
              p=p->next[id];
          }
      }
      p->v=-1;
  }
  int find_trie(char *str)
  {
      int len=strlen(str);
      trie *p=root;
      for(int i=0;i<len;i++)
      {
          int  id=str[i]-‘a‘;
          p=p->next[id];
          if(p==NULL)
            return 0;
          if(p->v==-1)
            return -1;
      }
      return -1;
  }
  //超内存怎么办?
  
  //释放空间
  void clear_trie(trie *t)
  {
      if(t==NULL) //空树直接返回
        return ;
      for(int i=0;i<MAX;i++)
      {
          if(t->next[i]==NULL)
            free(t);
          else
            clear_trie(t->next[i]);
      }
  }

  

模板——字典树Trie Tree

标签:malloc   ret   相同   roo   for   怎么办   trie tree   root   cpp   

原文地址:http://www.cnblogs.com/onlyli/p/7230858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!