poj2001字典树

#include <cstdio>

#include <cstring>

using namespace std;



typedef char st[22];

st str[20003];

st s;int p=0;

struct tree_node

{

    int count;

    tree_node *next[26];

}root ,node[20003];

void insert(char *word)

{

  tree_node *location=&root;

  while (*word)

  {

      if (location ->next[*word-'a']==NULL)

      {

          node[p].count=0;

          location->next[*word-'a']=&node[p++];

      }

      location =location->next[*word-'a'];

      location->count++;

      word++;

  }

}

void search(char *word)

{

tree_node *location=&root;

    while (*word&&location)

    {

        if (location->count ==1) break;

        printf("%c",*word);

        location=location->next[*word-'a'];

        word++;

    }

    printf("%\n");

    return;

}

int main()

{

    int i=0;

    while (scanf("%s",str[i])!=EOF)

    {

        insert(str[i]);

        i++;

    }

    int n=i;

    for (i=0;i<n;i++)

    {

    printf("%s ",str[i]);

    search(str[i]);

    }

    return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值