资源简介
字符文件统计字符出现频度,构造Huffman 树,编制Huffman编码,并将给定字符文件编码,生成编码文件;再将给定编码文件解码,生成字符文件

代码片段和文件信息
#include“head.h“
#include“head2.h“
#include“head3.h“
#include
#include
#include
#include
using namespace std;
//*********挑选两个权值小的节点****************//
int select(element hufftree[ ]int signint m)
{
int i=0;
int temp temp1temp2=0;;
for(i=0;i<2*m-1;i++)
{
if(hufftree[sign].parent==-1)
{
temp2++;
temp1=sign;
temp=hufftree[sign].weight;
}
if(temp2==1)
break;
sign++;
}
for(i=0;i<2*m-1;i++)
{
if( hufftree[i].weight < temp && hufftree[i].parent==-1 && hufftree[i].weight>0 )
{
temp1=i;
temp=hufftree[i].weight;
}
}
return temp1;
}
//////////////////////////////////////////////////////
//*****建立一棵哈夫曼树*******************//
/////////////////////////////////////////////////////
void huffman( element hufftree[ ]abcd letter[ ]int m )
{
int i1i2kisign;
ofstream outfile(“t2.txt“ios::out);
for(i=0;i<2*m-1;i++)
{
hufftree[i].parent=-1;
hufftree[i].lchild=-1;
hufftree[i].rchild=-1;
}
for(i=0;i {
hufftree[i].zimu=letter[i].character;
hufftree[i].weight=letter[i].number;
}
sign=0;
for(k=m;k<2*m-1;k++)
{
i1=select(hufftree signm);
hufftree[i1].parent=k;
hufftree[k].lchild=i1;
sign++;
i2=select(hufftreesignm);
hufftree[i2].parent=k;
hufftree[k].rchild=i2;
hufftree[k].weight=hufftree[i1].weight+hufftree[i2].weight;
sign++;
}
outfile< for(i=0;i {
if(hufftree[i].zimu==‘ ‘)
{
outfile<<‘_‘;
outfile< outfile< }
else
{
outfile< outfile< outfile< }
}
cout<<“*注意*:“< cout<<“ 压缩文件的配置文件已经保存到t2.txt中,“< cout<<“ 不要轻易的删除,否则将无法还原文件!“< }
/////////////////////////////////////////
///////////////////////////////////////
//压缩文件,并把文件保存到二进制的文件里
///////////////////////////////////
/////////////////////////////////
int yasuo(element hufftree[] int mnode flag[]bit bitvec[])
{
char ch;
int in=7;
int jstare=0;
ifstream infile(“f1.txt“ios::in);
ofstream outfile1(“ys.dat“ios::out);
bitset<8>temp4;
while(infile.get(ch))
{
for(j=0;j {
if(hufftree[j].zimu==ch)
{
for(i=flag[j].sign-1;i>=0; i--)
{
temp4[n]=bitvec[j].bitvec2[i];
n=n--;
if(n==-1)
{
outfile1.write((char *)&temp41);
stare++;
n=7;
}
}
}
}
}
cout< if(n!=7)
{
outfile1.write((char *)&temp41);
stare++;
}
outfile1.close();
cout<<“压缩的文件应经已二进制的方式保存到ys.dat文件之中!“< return stare;
}
/////////////////
//对每一个字母进行哈夫曼编码///
//////////
void bianma(element hufftree[]int mnode flag[]bit bitvec[])
{
int i;
int jtemp=0temp1=0temp2=0;
for(j=0;j {
flag[j].sign=0;
temp=0;
temp2=j;
for(i=m;i<2*m-1;i++)
{
if(hufftree[i].lchild==temp2)
{
temp2=i;
b
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2008-11-23 20:50 06082130\
文件 269824 2008-01-05 20:20 06082130\06082130 程序设计报告.doc
目录 0 2008-01-12 18:54 06082130\Huffman\
文件 2 2007-12-31 11:29 06082130\Huffman\bitset.h
文件 5365 2008-01-02 16:11 06082130\Huffman\hafu.cpp
文件 179 2008-01-01 11:52 06082130\Huffman\head.h
文件 75 2007-12-29 13:47 06082130\Huffman\head2.h
文件 73 2008-01-02 16:06 06082130\Huffman\head3.h
文件 2309 2008-01-02 16:13 06082130\Huffman\main.cpp
- 上一篇:矩阵运算C语言实现
- 下一篇:北京邮电大学大三下计算机图形学作业一
相关资源
- 数据结构实验——赫夫曼树相关
- 二叉树排序树建立及平衡处理
- 树莓派智能小车开发C语言源码
- c++ 数据结构 哈夫曼压缩&解压软件 控
- 使用平衡二叉树管理的学生管理系统
- C++文本文件无失真压缩 Huffman
- 决策树分类器ID3算法C语言
- 完整的C/C++时序的B+树数据库系统实现
- 用“破圈法”求解带权连通无向图的
- 家族成员信息管理系统
- VC++2012版Prim算法最小生成树动态演示
- 数据结构 图的最小生成树 C++描述 使
- 数据结构—课程设计家谱树管理系统
- 二叉树 VC6.0 MFC实现 数据结构
- Huffman和算术编码的C++实现
- 数据结构课程设计 山东大学版 文件
- MFC中的窗口分割和树形目录的创建
- 用C语言编写的分形树
- 二叉树的建立以及遍历
- 哈夫曼树MFC
- mfc树形控件201037
- C/C++文件系统树状结构
- 数据结构课程设计,最小生成树,采
- MFC二叉树遍历的可视化
- MFC树控件重绘
- C++版AVL树课程设计源代码
- 二叉排序树 建立 查询 删除
- 树形控件显示通讯录
- C语言 决策树 用c语言实现决策树
- 二叉树的生成与遍历mfc
评论
共有 条评论