• 大小: 974KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-01-09
  • 语言: 其他
  • 标签: 数据结构  

资源简介

哈夫曼编解码器 问题描述:使用哈夫曼编码,实现文本文件的编码和解码,具体要求如下: ① 文本文件 data.txt 中仅包含 ASCII 字符,总字符数不少于 1000。 ② 统计 data.txt 中各种字符的出现次数,并计算各自概率(出现次数/总字符数)。 ③ 以概率作为叶结点权值,构造哈夫曼树,并求出每个叶结点对应的哈夫曼编码。 ④ 对 data.txt 进行编码,结果存于 encode.txt。 ⑤ 对 encode.txt 进行解码,结果存于 decode.txt。 ⑥ 编写代码比较 data.txt 与 decode.txt 的文件内容是否一致。 涉及算法及知识:哈夫曼树、哈弗曼

资源截图

代码片段和文件信息

#include
#include
#include
#include 
using namespace std;

typedef struct{
int weight;
int lchild rchild parent;
}HTNode *HuffmanTree;

typedef char** HuffmanCode;
struct letter{
char data;
int count;
char* code;
}let[300];

string decode;

//在HT[1...end]中选择2个根结点权值最小的树,s1、s2为这2棵树在HT数组中的下标
void Select(HuffmanTree HT int end int &s1 int &s2){
unsigned int min = UINT_MAX; // 安全起见,循环前将min设为很大的值
for (int i = 1; i <= end; i++){
if (HT[i].parent == 0 && (HT[i].weight s1 = i;
min = HT[i].weight;
}
}
min = UINT_MAX;
for ( i = 1; i <= end; i++){
if (HT[i].parent == 0 && (HT[i].weight < min) && i != s1){ // 结点i之前未被选择过,且不是s1(防止重复选择)
s2 = i;
min = HT[i].weight;
}
}
}

//编码

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2000  2018-01-09 14:48  哈夫曼课程设计\data.txt

     文件      99328  2018-01-11 15:16  哈夫曼课程设计\Debug\vc60.idb

     文件     126976  2018-01-10 16:58  哈夫曼课程设计\Debug\vc60.pdb

     文件     569422  2018-01-11 15:16  哈夫曼课程设计\Debug\哈夫曼设计.exe

     文件     817912  2018-01-11 15:16  哈夫曼课程设计\Debug\哈夫曼设计.ilk

     文件     334855  2018-01-11 15:15  哈夫曼课程设计\Debug\哈夫曼设计.obj

     文件    2253648  2018-01-09 14:05  哈夫曼课程设计\Debug\哈夫曼设计.pch

     文件    1147904  2018-01-10 16:58  哈夫曼课程设计\Debug\哈夫曼设计.pdb

     文件       2000  2018-01-11 15:16  哈夫曼课程设计\decode.txt

     文件      13169  2018-01-11 15:16  哈夫曼课程设计\encode.txt

     文件       5420  2018-01-10 16:58  哈夫曼课程设计\哈夫曼设计.cpp

     文件       3451  2018-01-11 14:36  哈夫曼课程设计\哈夫曼设计.dsp

     文件        528  2018-01-11 17:02  哈夫曼课程设计\哈夫曼设计.dsw

     文件      41984  2018-01-11 17:02  哈夫曼课程设计\哈夫曼设计.ncb

     文件      48640  2018-01-11 17:02  哈夫曼课程设计\哈夫曼设计.opt

     文件        768  2018-01-11 15:16  哈夫曼课程设计\哈夫曼设计.plg

     目录          0  2018-01-10 16:58  哈夫曼课程设计\Debug

     目录          0  2018-01-11 17:02  哈夫曼课程设计

----------- ---------  ---------- -----  ----

              5468005                    18


评论

共有 条评论