1. 程式人生 > >poj--2503+字典樹入門題

poj--2503+字典樹入門題

字典樹入門題

將字串結尾的標記為一個字串,然後就可以用字典樹的插入和查找了

程式碼如下:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

#define maxn 26
typedef struct
{
    char str[13];
    int next[maxn];
}N;
N node[300001];
int top;

void insert(char *str,char *str1)
{
    int len=strlen(str);
    int t=0;
    for(int i=0;i<len;i++)
    {
        if(node[t].next[str[i]-'a']==0)
           node[t].next[str[i]-'a']=++top;
        t=node[t].next[str[i]-'a'];
    }
    strcpy(node[t].str,str1);
}

int search(char *str)
{
    int len=strlen(str);
    int t=0;
    for(int i=0;i<len;i++)
    {
        if(node[t].next[str[i]-'a']==0)
            return 0;
        t=node[t].next[str[i]-'a'];
    }
    printf("%s\n",node[t].str);
    return 1;
}

int main()
{
    char str1[20],str2[20],str[100];
    while(gets(str))
    {
        if(strlen(str)==0)
            break;
        sscanf(str,"%s %s",str1,str2);
        insert(str2,str1);
    }
    while(gets(str))
    {
        if(search(str)==0)
           printf("eh\n");
    }
  return 0;
}