实验5.1赫夫曼编译.docxVIP

  • 0
  • 0
  • 约1.06万字
  • 约 20页
  • 2019-03-23 发布于湖北
  • 举报
界面输入字符串并进行编码进行译码对附件统计字符频率并编码字符{}`~^出现频率最少,编码为:0011001011011,0011001011010,0011001100101,0011001100101和001100101100.字符’空格’,’e’,’t’,’a’,’i’,’s’是出现频率最高,编码为:(好像出错了)编译后的文件大小为:909kb,比原文件小了一半多。源代码:#includestdafx.h#ifndef HUFFMAMCODE_H #defineHUFFMAMCODE_H#includeiostream#includefstreamusingnamespace std;structHuffmanNode//定义哈夫曼树各结点{int weight;int parent;int lchild, rchild;int flag;};classHuffmanCode1//哈夫曼编码类{public:char Info[100];int Start;char Leaf;};classHuffmanTree1//建立哈夫曼树类{private:HuffmanNode *Node;public:int f;HuffmanCode1 *hf;HuffmanTree1();~HuffmanTree1();void TranslatedCode();void CodeHuf(HuffmanNode a[], HuffmanCode1 b[], int n);void CreateHfmTree(char Str[], int m[], int n);void TransCode(HuffmanCode1 b[], int n);void TranslateArtcle(HuffmanCode1 b[], int n);};#endif//HUFFMAMCODE_HHuffmanCode.cpp#includeiostream#includestdio.h#includemath.h#includestdlib.h#includestringusingnamespace std;#defineMAXDATA 100000 //最长字符串#defineMAXSIZE 1500 //最多子叶数///////////读取文件部分功能实现的代码$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$HuffmanTree1::HuffmanTree1(){Node = NULL;} //将树结点初始化为HuffmanTree1::~HuffmanTree1(){delete[] Node;} //释放结点空间voidHuffmanTree1::CreateHfmTree(charStr[], intm[], intn)//建立哈夫曼树{int i, j, m1, m2, x1, x2;HuffmanNode *HfmNode = newHuffmanNode[2 * n - 1];HuffmanCode1 *HfmCode = newHuffmanCode1[n];for (i = 0; i2 * n - 1; i++){HfmNode[i].weight = 0;HfmNode[i].parent = 0;HfmNode[i].flag = 0;HfmNode[i].lchild = -1;HfmNode[i].rchild = -1;}for (i = 0; in; i++){HfmNode[i].weight = m[i];HfmCode[i].Leaf = Str[i];}for (i = 0; in - 1; i++){m1 = m2 = 32767;x1 = x2 = 0;for (j = 0; jn + i; j++){if (HfmNode[j].weight = m1HfmNode[j].flag == 0){m2 = m1;x2 = x1;m1 = HfmNode[j].weight;x1 = j;}elseif (HfmNode[j].weight = m2HfmNode[j].flag == 0){m2 = HfmNode[j].weight;x2 = j;}}HfmNode[x1].parent = n + i;HfmNode[x2].parent = n + i;HfmNode[x1].flag = 1;HfmNode[x2].flag = 1;HfmNode[n + i].weight = HfmNode[x1].weight + HfmNode[x2].weight;HfmNode[n + i].lchild = x1;HfmNode[n + i].rchi

文档评论(0)

1亿VIP精品文档

相关文档