33,008
社区成员
发帖
与我相关
我的任务
分享
#define ALPHA_SIZE 26
#define DELIMITER ';'
typedef struct _KeyTreeNode {
int ncount;
_KeyTreeNode *subTree[ALPHA_SIZE];
}KeyTreeNode;
void initKeyTreeNode(KeyTreeNode *node)
{
node->ncount = 0;
for(int i = 0; i < ALPHA_SIZE; i++)
{
node->subTree[i] = NULL;
}
}
void traverseRecord(KeyTreeNode *root,FILE *fp)
{
if(NULL == root || NULL == fp)
return ;
char buf[255];
char *p = NULL;
while(!feof(fp))
{
memset(buf,0x00,sizeof(buf));
fgets(buf,255,fp);
while((p = strtok(buf,DELIMITER)) != NULL)
{
traverseWork(root,p);
}
}
}
void traverseWord(KeyTreeNode *node , const char *word)
{
KeyTreeNode *q;
const char *p;
for(p = word,q = node; p != NULL && *p != '\0' ; p++)
{
if( NULL == q->subTree[*p-'a'] )
{
q->subTree[*p-'a'] = (KeyTreeNode*)malloc(sizeof(KeyTreeNode));
initKeyTreeNode(q->subTree[*p-'a']);
}
if(*(p+1) == '\0')
q->subTree[*p-'a']->ncount++;
else
q = q->subTree[*p-'a'];
}
}
int main(int argc , char **argv)
{
KeyTreeNode *keytree = (KeyTreeNode*)malloc(sizeof(KeyTreeNode));
initKeyTreeNode(keytree);
fp = fopen("database.txt","r");
traverseRecord(keytreemap,fp);
return 0;
}