这是一棵简单字典树构建之后会对他进行补充的,这是练练手。
#include <bits/stdc++.h>
struct trietree
{
int value = 0;
trietree *ss[100];
} head;
int buid(trietree *head)
{
char word[100];
scanf("%s",word);
int len=strlen(word);
trietree *p;
p=head;
printf("length=%d\n",len);
for(int i=0; i<len; i++)
{
if(p->ss[(int)word[i]]!=0)
{
p = p->ss[(int)word[i]];
}
else
{
trietree* node;
printf("input = %c\n",word[i]);
node=(trietree*)malloc(sizeof(trietree));
node->value=0;
memset(node->ss,0,sizeof(trietree));
p->ss[(int)word[i]]=node;
p=node;
}
if(i==len-1)
{
p->value = -1;
}
}
}
int dfs(trietree *head)
{
trietree* now;
now=head;
for(int i = 0; i < 100; i ++)
{
// printf("i=%d value=%d\n",i,now->value);
if(now->ss[i]!=0)
{
if(now->ss[i]->value==-1)
{
printf("@@@@@@@@@@@@@@@@@@@@%d@@@@@@@@@@@@@\n",i-48);
}
// printf("char=%d\n",i);
dfs(now->ss[i]);
// printf("point=%d\n",now->ss[i]!=0);
}
}
}
int main()
{
int s;
buid(&head);
buid(&head);
printf("first=%d\n",head.ss[49]->ss[50]->ss[51]->ss[52]->value);
dfs(&head);
return 0;
}
美滋滋哈哈。