资源简介
n元哈夫曼编码,如果大家作为信息论课设的话,记得拿到代码读懂后再修改。
代码片段和文件信息
#include
#include
#include
#include
#define maxnum 10 //限制最多进行10元编码
#define leaf 257 //最多需要编码的字符
#define node 2*leaf-1 //Huffman树的结点数
#define max 32768
using namespace std;
int num;//字符串总长度
int num1;//扩展后总数
//编码结点
typedef struct{
int len;
char ch;
char bits[10];
}HC;
typedef HC HuffmanCode[leaf+1];
//huffman树的结点
typedef struct{
int weight;
int parent;
int child[maxnum];
}HTNode;
typedef HTNode HuffmanTree[node+1];
//统计输入的字符串的字符以及每个字符的个数
void jsq(string sint cnt[]char str[])
{
int i=0j=0k=0;
//初始化
for(i=0;i<257;i++){
str[i]=‘\0‘;
}
for(i=0;i<257;i++){
cnt[i]=0;
}
int temp[257];
for(i=0;i<257;i++)
temp[i]=0;
for(i=0;s[i]!=‘\0‘;i++)
temp[ s[i] ]++;
for(i=0j=0;i<=256;i++)
if(temp[i]!=0){
j++;
str[j]=i;
cnt[j]=temp[i];
}
num=j;
cout<<“共有“< }
//从中挑选n个最小的出来n表示挑选多少个
void select(HuffmanTree HTint lenint n){
int ijmintemp;
for(j=0;j min=max;
for(i=1;i<=len;i++){
if(HT[i].parent==0 && HT[i].weight min=HT[i].weight;
temp=i;
}
}
HT[temp].parent=len+1;
HT[len+1].child[j]=temp;
HT[len+1].weight=HT[len+1].weight+HT[temp].weight;
}
}
//创建霍夫曼树
void chuffmantree(HuffmanCode HCHuffmanTree HTchar str[]int cnt[]int n ){
int ij;
for(i=0;i<2*num-1;i++){
HT[i].weight=0;
HT[i].parent=0;
for(j=0;j HT[i].child[j]=0;
}
}
for(i=1;i<=num;i++){
HC[i].ch=str[i];
}
for(i=1;i<=num;i++){
HT[i].weight=cnt[i];//每个结点权值等于相应的符号个数值
}
//扩充
int k=0;
if(num!=n)
k=(num-n)/(n-1)+1;
num1=(n-1)*k+n;
for(i=num;i HT[i].weight=0;
}
for(i=num1+1;i<=num1+k+1;i++){
//从中挑选n个最小的出来
select(HTi-1n);
}
}
/
- 上一篇:python wordcloud whl包
- 下一篇:画线算法C++的实现-鼠标交互
相关资源
- 画线算法C++的实现-鼠标交互
- C++机房收费系统
- 数据结构和算法案例-欢乐五子棋 C+
- 操作系统进程调度C++代码实现
- 操作系统请求分页存储器管理C++代码
- C++语言标准化考试系统
- 卡尔曼滤波C++代码实现.zip
- 基于c++的markdown解析器
- c语言程序实现PC端通过USB端口与单片
- Draw项目的地址.txt
- 基于opencv的C++人眼识别以及眨眼检测
- 在VS2012上基于opencv的C++人眼识别与眨
- linux 下 python调用c或者c++编写的代码使
- The C++ IO Streams and Locales
- c++primer 第五版 源代码
- C++ Qt5实现RSA加解密
- MD5算法c++程序设计实现
- 链表实现集合的交叉并运算c++.cpp
- QT编写的电子时钟 c++源码
- 学生成绩管理系统C++QT可视化
- 用C++,QT画分形图
- 南航C++课程设计含课设报告
- 华容道基本功能c++实现
- 基于暗通道和导向滤波的图像去雾算
- 学生社团管理系统数据结构课程设计
- python35_d.lib
- C++十进制加减法
- K近邻算法c/c++
- C++实现8方向A*算法
- Pthread 多线程C++动态库+静态库+头文件
评论
共有 条评论