#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXWORD 30 //每个单词最大长度#define MAXSIZE 200//定义单词最大种类#define TRUE 1#define FALSE 0//单词及频度的结构体typedef struct{ char word[MAXWORD]; //存储单词 int count; //记录单词出现次数}wordNode;//哈夫曼树的存储表示typedef struct{ char word[MAXWORD]; //存储单词 int weight; int parent,lchild,rchild; char code[MAXWORD]; //存储哈夫曼编码}HTNode,*HuffmanTree; //HuffmanTree为数组名typedef int Status;//1.统计文件中的单词种类及出现次数,存入words数组中,num为数组元素个数(单词的种类)void CountWords(wordNode words[],int &num); //2.计算哈夫曼树前k个中权值最小的两个下标x1, x2void SelectMin(HuffmanTree HT, int k, int &x1, int &x2)//3.根据统计出的单词及频度构造哈夫曼树,words为单词及频度,num为单词种类void CreateHuffmanTree(HuffmanTree &HT,wordNode words[],int num)//4-1.对叶子结点k, 往上搜索到根节点,然后逆置得到该字符的huffman编码void getcode(int k, char &str);//4-2.由哈夫曼树生成哈夫曼编码,并输出该单词和对应的huffman编码void HuffCode(HuffmanTree HT, int num);//5.用哈夫曼编码替换sample.txt的原文,转换为哈夫曼编码的0/1串,保存为sample2.txtvoid ReplaceByCode(HuffmanTree HT, int num);//6.将sample2.txt译码为原文,保存为sample3.txtvoid DeCode(Huffm
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。