zoukankan      html  css  js  c++  java
  • 字典树模板

    字典树模板

    #include<stdio.h>
    #include<string.h>
    #define kind 26//字母种类
    struct Treenode//树的结点结构
    {
        int count;//这个附加变量在本题中记录遍历到该结点形成的字符串出现的次数,在不同题中可记录不同的内容。
        Treenode *next[kind];//指向儿子结点
        Treenode()//每个结点的初始化
        {
            count=1;
            for(int i=0;i<kind;i++)
                next[i]=NULL;
        }
    };
    void insert(Treenode *&root,char *word)//向以root为根结点的树中插入串word
    {
        Treenode *location=root;
        int i=0,branch=0;
        if(location==NULL) 
        {
            location=new Treenode();
            root=location;
        }
        while(word[i])
        {
            branch=word[i]-'a';
            if(location->next[branch]) location->next[branch]->count++;//如果该字符存在,串数量加1
            else location->next[branch]=new Treenode();//如果不存在,建新结点
            i++;
            location=location->next[branch];
        }
    }
    int search(Treenode *&root,char *word)//查找,与插入类似
    {
        Treenode *location=root;
        int i=0,branch=0,ans;
        if(location==NULL) return 0;
        while(word[i])
        {
            branch=word[i]-'a';
            if(!location->next[branch]) return 0;
            i++;
            location=location->next[branch];
            ans=location->count;
        }
        return ans;
    }
    int main()
    {
        char word[101][10];
        char ask[10];
        Treenode *root=NULL;
        int n,i;
        scanf("%d",&n);
           for(i=0;i<n;i++)
           {
               scanf("%s",word[i]);
            insert(root,word[i]);
           }
           while(scanf("%s",ask)!=EOF)
           {
              printf("%d
    ",search(root,ask));
           }
        return 0;
    }
  • 相关阅读:
    vb 动态添加 timer
    sruts2 国际化 规范
    vb 创建xml
    robots
    android 桌面斗地主
    QT 平台
    云软件 Eucalyptus云
    android intentfilter
    android 布局相关
    Zend Studio PHP
  • 原文地址:https://www.cnblogs.com/--lr/p/7668063.html
Copyright © 2011-2022 走看看