//structure for creating dictionary
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct trie
{
struct trie *arr[26];
char *meaning;
int flag;
}*head;
//initializing
struct trie* init(struct trie *root)
{
root
=malloc(sizeof(struct trie
*)); root->flag=-1;
int i=0;
for(i=0;i<26;i++)
root->arr[i]=NULL;
return root;
}
//inserting word and its meaning
void insert(struct trie *root,char *word,char * mean)
{
int i;
for(i=0;i<wordLen;i++)
{
int val=word[i]-'a';
if(!(root->arr[val]))
{
struct trie *tmp;
tmp=init(tmp);
root->arr[val]=tmp;
root=tmp;
if(i==(wordLen-1))
{
root->flag=1;
break;
}
continue;
}
root=root->arr[val];
if(i==(wordLen-1))
{
root->flag=1;
}
}
}
//checking meaning of a word.
char* findMeaning(struct trie *root,char *word)
{
int i;
for(i=0;i<len;i++)
{
int val=word[i]-'a';
if(!(root->arr[val]))
return NULL;
root=root->arr[val];
}
if(root->flag==1)
return root->meaning;
return NULL;
}
int main()
{
head=init(head);
insert(head,"me","you");
printf("%s",findMeaning
(head
,"me")); //just testing return 0;
}
IC8vc3RydWN0dXJlIGZvciBjcmVhdGluZyBkaWN0aW9uYXJ5CiAjaW5jbHVkZTxzdGRpby5oPgogI2luY2x1ZGU8c3RkbGliLmg+CiAjaW5jbHVkZTxzdHJpbmcuaD4KIAogICBzdHJ1Y3QgdHJpZQogIHsKICAgICAgc3RydWN0IHRyaWUgKmFyclsyNl07CiAgICAgIGNoYXIgKm1lYW5pbmc7CiAgICAgIGludCBmbGFnOwogIH0qaGVhZDsKIC8vaW5pdGlhbGl6aW5nCiAgc3RydWN0IHRyaWUqIGluaXQoc3RydWN0IHRyaWUgKnJvb3QpCiB7CiAgICAgIHJvb3Q9bWFsbG9jKHNpemVvZihzdHJ1Y3QgdHJpZSAqKSk7CiAgICAgIHJvb3QtPmZsYWc9LTE7CiAgICAgIGludCBpPTA7CiAgICAgIGZvcihpPTA7aTwyNjtpKyspCiAgICAgICAgIHJvb3QtPmFycltpXT1OVUxMOwogICAgICByZXR1cm4gcm9vdDsgCiAgfQovL2luc2VydGluZyB3b3JkIGFuZCBpdHMgbWVhbmluZwogIHZvaWQgaW5zZXJ0KHN0cnVjdCB0cmllICpyb290LGNoYXIgKndvcmQsY2hhciAqIG1lYW4pCiAgewogICAgICAgaW50IHdvcmRMZW49c3RybGVuKHdvcmQpOwogICAgICAgaW50IGk7CiAgICAgICBmb3IoaT0wO2k8d29yZExlbjtpKyspCiAgICAgICB7CiAgICAgICAgICAgaW50IHZhbD13b3JkW2ldLSdhJzsKICAgICAgICAgICBpZighKHJvb3QtPmFyclt2YWxdKSkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHN0cnVjdCB0cmllICp0bXA7CiAgICAgICAgICAgICAgIHRtcD1pbml0KHRtcCk7CiAgICAgICAgICAgICAgIHJvb3QtPmFyclt2YWxdPXRtcDsKICAgICAgICAgICAgICAgcm9vdD10bXA7CiAgICAgICAgICAgICAgIGlmKGk9PSh3b3JkTGVuLTEpKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcm9vdC0+ZmxhZz0xOwogICAgICAgICAgICAgICAgICByb290LT5tZWFuaW5nPW1hbGxvYyhzaXplb2YoY2hhcikqc3RybGVuKG1lYW4pKTsKICAgICAgICAgICAgICAgICAgc3RyY3B5KHJvb3QtPm1lYW5pbmcsbWVhbik7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgcm9vdD1yb290LT5hcnJbdmFsXTsKICAgICAgICBpZihpPT0od29yZExlbi0xKSkKICAgICAgICB7CiAgICAgICAgICAgcm9vdC0+ZmxhZz0xOwogICAgICAgICAgIHJvb3QtPm1lYW5pbmc9bWFsbG9jKHNpemVvZihjaGFyKSpzdHJsZW4obWVhbikpOyAgCiAgICAgICAgICAgc3RyY3B5KHJvb3QtPm1lYW5pbmcsbWVhbik7CiAgICAgICAgfSAgICAgICAgICAgIAogICAgfQp9Ci8vY2hlY2tpbmcgbWVhbmluZyBvZiBhIHdvcmQuCiAgY2hhciogZmluZE1lYW5pbmcoc3RydWN0IHRyaWUgKnJvb3QsY2hhciAqd29yZCkKICB7CiAgICAgIGludCBsZW49c3RybGVuKHdvcmQpOwogICAgICBpbnQgaTsKICAgICAgZm9yKGk9MDtpPGxlbjtpKyspCiAgICAgewogICAgICAgICAgaW50IHZhbD13b3JkW2ldLSdhJzsKICAgICAgICAgaWYoIShyb290LT5hcnJbdmFsXSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcm9vdD1yb290LT5hcnJbdmFsXTsgCiAgICAgfQogICAgIGlmKHJvb3QtPmZsYWc9PTEpCiAgICAgICAgcmV0dXJuIHJvb3QtPm1lYW5pbmc7CiAgICByZXR1cm4gTlVMTDsgCiAgfQogIGludCBtYWluKCkKIHsKICAgICAgaGVhZD1pbml0KGhlYWQpOwogICAgICBpbnNlcnQoaGVhZCwibWUiLCJ5b3UiKTsKICAgICAgcHJpbnRmKCIlcyIsZmluZE1lYW5pbmcoaGVhZCwibWUiKSk7IC8vanVzdCB0ZXN0aW5nCiAgICAgIHJldHVybiAwOwogfQ==