初识字典树
来源:互联网 发布:qq飞车卓越数据 编辑:程序博客网 时间:2024/06/05 21:11
由字母a~z所组成的字符串的一个集合中,各个字符的长度之和为n。设计一个O(n)时间的算法,将这个集合中所有字符串依字典进行排序。注意,这里可能存在非常长的字符串。
#include <stdio.h>
#include <malloc.h>
typedef struct tire
{
struct tire *next[26];
char date;
int cnt;
}*_tire;
void init_tire(_tire root, char *string)
{
_tire s;
s=root;
while(*string!='/0')
{
if(s->next[*string - 'a']==NULL)
{
s->next[*string - 'a'] = (_tire)malloc(sizeof(struct tire));
(s->next[*string - 'a'])->date = *string;
s = s->next[*string - 'a'];
for(int i=0;i<26;i++)
{
s->next[i] = NULL;
}
}
else
{
s = s->next[*string - 'a'];
}
string++;
}
s->cnt=1;
}
void print(_tire root, char *s, int i)
{
int j;
s[i] = root->date;
if(root->cnt==1)
{
s[i+1] = 0;
puts(s);
}
for(j=0;j<26;j++)
{
if(root->next[j]!=NULL)
{
print(root->next[j],s,i+1);
}
}
}
int main()
{
_tire root;
int m,i;
char s[265];
root = (_tire)malloc(sizeof(struct tire));
puts("输入字符串个数:");
for(i=0;i<26;i++)
{
root->next[i]=NULL;
}
scanf("%d",&m);
getchar();
while(m--)
{
gets(s);
init_tire(root,s);
}
puts("/n依字典排序后:");
for(i=0;i<26;i++)
{
if(root->next[i] != NULL)
{
print(root->next[i],s,0);
}
}
return 0;
}
- 初识字典树
- 初识字典树(Trie Tree)
- 初识Oracle数据字典
- [转]初识字典管理
- python 元祖,列表,字典 初识
- 初识Swift(二)-数组与数据字典
- Python进阶(二)-初识Python数据元素:字典&时间
- Python字典初识—Python取经之路
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树。。
- 字典树
- 字典树
- 字典树
- 字典树
- 开发人员需要知道的东西杂谈
- 网络招聘市场风起云涌,地域的重要性有多大
- awk使用手册
- Linux下C语言编程-进程的创建
- ASP.NET存储状态的一个问题
- 初识字典树
- Struts+Spring+Hibernate真正入门级实例
- Form窗体的KeyPreview属性的妙用(.NET C#)
- 转:用jsp生成树
- vb.net 遍历Dategrid
- RDF/XML
- 发展P2P IPTV有可能使中国实现顶层创新
- RTTI关于dynamic_cast的学习笔记(1)
- 软件的架构与设计模式之模式的种类