#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"data_structure.h"
/*
创建一棵仅有根节点的字典树
*/
TrieTree create_TrieTree()
{
TrieTree pTree = (TrieTree)malloc(sizeof(TrieNode));
pTree->count = 0;
int i;
for(i=0;i<MAX;i++)
pTree->next[i] = NULL;
return pTree;
}
/*
插入字符串str到字典树pTree中
由于不可能改变根节点,因此这里不需要传入pTree的引用
*/
void insert_TrieTree(TrieTree pTree,char *str)
{
int i;
TrieTree pCur = pTree; //当前访问的节点,初始指向根节点
int len = strlen(str);
for(i=0;i<len;i++)
{
int id = str[i] - 'a'; //定位到字符应该在的位置
if(!pCur->next[id])
{ //如果该字符应该在的位置为空,则将字符插入到该位置
int j;
TrieNode *pNew = (TrieNode *)malloc(sizeof(TrieNode));
if(!pNew)
{
printf("pNew malloc fail\n");
exit(-1);
}
pNew->count = 1;
for(j=0;j<MAX;j++)
pNew->next[j] = NULL;
//指针后移,比较下一个字符
pCur->next[id] = pNew;
pCur = pCur->next[id];
}
else
{ //如果该字符应该在的位置不空,则继续比较下一个字符
pCur = pCur->next[id];
pCur->count++; //每插入一个字符,公共前缀数目就加1
}
}
}
/*
统计字典树pTree中以str为前缀的字符串的数目
*/
int count_TrieTree(TrieTree pTree,char *str)
{
int i;
TrieTree pCur = pTree;
int len = strlen(str);
for(i=0;i<len;i++)
{
int id = str[i] - 'a';
if(!pCur->next[id])
return 0;
else
pCur = pCur->next[id];
}
return pCur->count;
}
/*
销毁字典树
*/
void destroy_TrieTree(TrieTree pTree)
{
int i;
//递归释放每个节点的内存
for(i=0;i<MAX;i++)
if(pTree->next[i])
destroy_TrieTree(pTree->next[i]);
free(pTree);
}
兰亭风雨
- 粉丝: 8560
- 资源: 13
最新资源
- 光伏电池模型 Matlab Simulink仿真模型(成品) 模拟了光伏电池的输出特性,可以自行改变光照强度和温度得到多组U-P、U-I曲线 图中光照强度400,温度为25度,这两个参数均可调节
- weixin小程序项目基于JAVA微信点餐小程序设计+ssm.zip
- weixin小程序项目基于微信的乐室预约小程序+ssm.zip
- weixin小程序项目会议发布与预约系统的设计与开发+ssm.zip
- weixin小程序项目绘画学习平台+ssm.zip
- weixin小程序项目基于h 移动网赚项目设计与实现+springboot.zip
- weixin小程序项目互助学习小程序的设计与实现+ssm.zip
- weixin小程序项目个人健康数据管理系统的设计与实现+ssm.zip
- weixin小程序项目公交信息在线查询系统+ssm.zip
- 光伏电池MATLAB数据线,Visio,可自己调,可直接使用,有快速出线教程
- weixin小程序项目高校寻物平台+ssm.zip
- weixin小程序项目房屋租赁管理系统的设计与实现+ssm.zip
- weixin小程序项目高校体育场管理系统+ssm.zip
- weixin小程序项目儿童预防接种预约微信小程序+springboot.zip
- weixin小程序项目订餐系统设计与实现+ssm.zip
- weixin小程序项目电子商城购物平台的设计与开发+ssm.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈