zoukankan      html  css  js  c++  java
  • 字典树的实现

    
    字典树经常使用于前缀匹配
    [syswj@host 0813]$ cat dic_tree.cpp
    #include <iostream>
    #include <stdio.h>
    #define MAX 26
    usingnamespace std;
    typedefstruct TrieNode
    {
        intncount;
        structTrieNode *next[MAX];
    }TrieNode;
    
    voidinit(TrieNode **pRoot)//初始化
    {
        *pRoot = NULL;
    }
     
    TrieNode* create()//创建新节点
    {
        TrieNode *a =new TrieNode;
        a->ncount = 0;
        for(inti = 0; i < MAX; ++i)
            a->next[i] = NULL;
        returna;
    }
     
    voidinsert(TrieNode **pRoot, char*s)//插入
    {
        inti, k;
        TrieNode *p;
        if(!(p = *pRoot))
        {
            p = *pRoot = create();
        }
        i = 0;
        while(s[i])
        {
            k = s[i++] -'a';
            if(!p->next[k])
            {
                p->next[k] = create();
            }
            p = p->next[k];
        }
        p->ncount++;
    }
    
    int search(TrieNode *pRoot, char *s)//查找
    {
        TrieNode *p;
        inti, k;
        if(!(p = pRoot))
        {
            return0;
        }
        i = 0;
        while(s[i])
        {
            k = s[i++] -'a';
            if(p->next[k] == NULL)
                return0;
            p = p->next[k];
        }
        returnp->ncount;
    }
     
    int main(int argc,const char *argv[])
    {
      TrieNode *p;
      init(&p);
      chara[20] = {"abc"} ;
      insert(&p, a);
      insert(&p, a);
      insert(&p,"bcd");
      insert(&p,a);
      cout << search(p,a) << endl;
      cout << search(p,"bcd") << endl;
        return0;
    }

  • 相关阅读:
    MySQL 处理重复数据
    MySQL 序列使用
    MySQL 元数据
    MySQL 临时表和复制表
    MySQL 索引
    MySQL ALTER命令-修改数据表名或者修改数据表字段
    MySQL 事务
    MySQL 正则表达式
    MySQL NULL 值处理
    MySQL 排序
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6752639.html
Copyright © 2011-2022 走看看