字典树,该如何解决

字典树

#include <iostream>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define points 26


struct node;
typedef struct node *NumTree;

struct node
{
int count;
NumTree N[points];
};

NumTree init(NumTree T)
{
T=(NumTree)malloc(sizeof(struct node));
int i;
for(i=0;i<points;i++)
{
T->N[i]=NULL;
}
return T;
}

void Insert(NumTree T,char str[])
{
NumTree UseNow,s;
UseNow=T;
int i,len;
len=strlen(str);
int id;
for(i=0;i<len;i++)
{
id=str[i]-'a';
if(UseNow->N[id]==NULL)
{
s=(NumTree)malloc(sizeof(struct node));
s->count=1;
int j;
for(j=0;j<points;j++)
s->N[i]=NULL;
UseNow->N[id]=s;
UseNow=UseNow->N[id];
}
else
{
UseNow->N[id]->count++;
UseNow=UseNow->N[id];
}
}
}

int find(NumTree T,char str[])
{
int i,id;
NumTree P;
P=T;
int len=strlen(str);
for(i=0;i<len;i++)
{
id=str[i]-'a';
if(P->N[id]==NULL)
return 0;
else
P=P->N[id];
}
return P->count;
}


int main()
{
NumTree T=NULL;
T=init(T);
char str[100];
while(gets(str) && str[0]!='\0')
Insert(T,str);
int n;
cin>>n;
while(n--)
{
gets(str);
int sum=0;
sum=find(T,str);
cout<<sum<<endl;
}
return 0;
}



自己写的字典树,可是运行Insert例程的时候自动弹出了,不知道是怎么回事?应该怎么改?请教各位大侠
------解决方案--------------------
if(UseNow->N[id]==NULL)
        {
            s=(NumTree)malloc(sizeof(struct node));
            s->count=1;
            int j;
            for(j=0;j<points;j++)
                s->N[i]=NULL;
            UseNow->N[id]=s;
            UseNow=UseNow->N[id];
        }

仔细看,里面有个地方写错了。