字典树实现词频统计及频率字典序双重融合排序算法

这是一个C语言程序,用于对英文小说进行词频统计,利用字典树实现。按照单词频率降序排列,同频单词则按字典序升序排序。程序会输出前100个高频单词及其频率,并将所有单词频率写入wordfreq.txt文件。输入文件为article.txt,使用了快速排序算法辅助处理。
摘要由CSDN通过智能技术生成

/*本程序(C实现)用于一个英文小说(单词数量大约100万)的词频统计。具体规则如下:
*按照单词出现频率由高到低排序,相同频率的单词,按照字典序排序,字典序小的在前
*输出排序的前100个单词及其频率,并将所有单词的频率输入到wordfreq.txt中,小说
*打开文件为article.txt.(程序采用字典树实现,加上快速排序算法,p:程序最后偷懒没有
*释放完全申请的内存空间)
**/

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define MAX_WORD 100000/*估计单词种类最多数量*/
#define MAX_LEN 26/*限制单词最大长度*/
#define MAX_OUT_SCREEN 100/*屏幕输出单词数量最大值*/
#define ALPHA 26
typedef struct word
{
    int count;
    char *word;
    int dictionary_code;/*字典树中字典序编号(最后遍历的时候输入)*/
}*WordNodeptr;
typedef struct branch_trie
{
    char current_char;
    int flag[ALPHA];/*对应该结点的26个链接点存在状态*/
    int flag_word_exist;
    struct branch_trie *links[ALPHA];
    WordNodeptr current_words;
}*Branchptr;
Branchptr myTrie;
int dictionary_number_for_search = 1;
WordNodeptr word_list[MAX_WORD];
/*******/
int Add_Or_Insert(char *);
void Travel_Trie();
void DFS_Travel(Branchptr restrict);
void Quick_Sort(int, int);
int Partition(int, int);
void Outcome_Print();
/*******/
int main(void)
{
    myTrie = (Branchptr)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值