- 264
- 0
- 约6.33千字
- 约 11页
- 2018-06-06 发布于江西
- 举报
武汉理工大学数据结构与算法综合实验哈夫曼树解析.doc
学生学号 Xxx 实验课成绩 学 生 实 验 报 告 书
实验课程名称 数据结构与算法综合实验 开课学院 计算机科学与技术学院 指导教师姓名 xxx 学生姓名 xxx 学生专业班级 xxxx
2015 -- 2016 学年 第 2 学期
实验课程名称: 数据结构与算法综合实验
实验项目名称 二叉树与赫夫曼图片压缩 实验者 xx 专业班级 xxx 组别 同组者 完成日期 2016年5月2日 第一部分:实验分析与设计(可加页)
实验目的和要求
1.目的
= 掌握树的存储结构
掌握二叉树的三种遍历方法
掌握 Huffman 树、Huffman 编码等知识和应用
使用 C++、文件操作和 Huffman 算法实现“图片压缩程序”专题编程。
针对一幅 BMP 格式的图片文件,统计 256 种不同字节的重复次数,以每
字节重复次数作为权值,构造一颗有 256 个叶子节点的哈夫曼二叉树。
=利用上述哈夫曼树产生的哈夫曼编码对图片文件进行压缩。
压缩后的文件与原图片文件同名,加上后缀.huf(保留原后缀),如 pic.bmp
压缩后 pic.bmp.huf依据上述的实验目的与要求,可导出实现的二叉树与赫夫曼图片压缩软件的流程为:
读取图片文件、统计权值
生成 Huffman 树
③ 生成 Huffman 编码
④ 压缩图片文件
⑤ 保存压缩的件
256种不同字节的重复次数使用整型数组。
int weight[256] = { 0 };
二叉树的存储结构。使用结构体存储节点,使用数组存储树的节点,使用静态二叉链表方式存储二叉树。
Huffman编码存储结构
struct HTNode
{
int weight;//权值
int parent;
int lchild;
int rchild;
char zifu;
string bianma;
};
压缩文件的算法的数据结构
为正确解压文件,除了要保存原文件长度外,还要保存原文件中256种字节重复的次数,即权值。定义一个文件头,保存相关的信息:
struct HEAD
{
char type[4];
int length;
int weight[256];
};
压缩文件时,定义一个内存缓冲区:
typedef char * pBuffer
; //其大小视原文件压缩后的大小
2.核心算法设计
(1)生成Huffman树和Huffman编码的算法
void Select(HTNode huffTree[],int m)
{
int min,min2,i;
min=min2=1000;
for(i=0;im;i++)
if(huffTree[i].parent==-1)
if(minhuffTree[i].weight )
{
min2=min;
min=huffTree[i].weight ;
x2=x1;
x1=i;
}
else if(min2huffTree[i].weight )
{
min2=huffTree[i].weight ;
x2=i;
}
}
void creatHuffman(int huff[])
{
int i;
int s=256;
for(i=0;i2*s-1;i++)
{
HuffmanTree[i].parent =-1;
HuffmanTree[i].lchild =-1;
HuffmanTree[i].rchild =-1;
}
for(int i1=0;i1s;i1++)
HuffmanTree[i1].weight=huff[i1];
for(int k=s;k2*s-1;k++)
{
Select(HuffmanTree,k);
HuffmanTree[x1].parent =k;
HuffmanTree[x2].parent =k;
HuffmanTree[k].weight =HuffmanTree[x1].weight +HuffmanTree[x2].weight ;
HuffmanTree[k].lchild =x1;
HuffmanTree[k].rchild =x2;
}
}
void HuffmanCoding(HTNode huffTree[],int n)
{
int i,j=0;
for(i=2*(n-1);in-1;i--)
{
huffTree[huffTree[i].lchild ].bianma =0;
huffTree[huffTree[i].rch
您可能关注的文档
- 国际金融—外汇交易与汇率风险管理_[全文].doc
- 毛概社会实践调查报告(精选篇).doc
- 关于体育舞蹈的论文.doc
- 实训报告册 外贸单证日语本科(同名).doc
- 构建数字化设计与制造高技能人才培养的专业教师团队之探讨_论文.docx
- matlab在科学计算中的应用与概率论数理统计问题(可编辑).doc
- 西方戏剧理论史(下)读书笔记.doc
- 【学术研究】日语概论整理 (可编辑).doc
- 近现代史纲要实践报告 A中国近现代史纲要社会实践调查报告的选题.doc
- 【最新】我国当前消费市场状况与消费心理分析.doc
- 【上交所-2026研报】上海锦和商业经营管理(集团)股份有限公司2025年年度报告.pdf
- 【上交所-2026研报】横店影视股份有限公司2025年年度报告.pdf
- 【港交所-2026研报】比特元宇宙 中期报告 2025-2026.pdf
- 【上交所-2026研报】晶方科技2025年年度报告.pdf
- 【蔚云科技-2026研报】2025亚马逊【自动割草机】行业分析年度研究.pdf
- 【港交所-2026研报】智升集团控股 中期报告2025-26.pdf
- 【上交所-2026研报】2025年年度报告.pdf
- 【世界卫生组织-2026研报】Recommended composition of influenza virus vaccines for use in the 2026-2027 northern hemisphere influenza season.pdf
- 【港交所-2026研报】WT集团 2025-2026 中期报告.pdf
- 【港交所-2026研报】新世界发展 中期报告 2025-2026.pdf
最近下载
- 第二章-多媒体数据压缩技术.ppt VIP
- 2026年春季统编版(部编版)2024新教材二年级下册道德与法治教学计划、教学设计及教学反思(附目录).pdf
- 24.抽取文本汇词云(教学课件)-四年级信息科技全一册 (人教版2024).pptx VIP
- 2025年军队文职人员统一招聘面试( 航空航天)题库附答案.doc VIP
- PLC基础知识大全培训PPT课件.pptx VIP
- 《高中数学•同步课堂学与练》高二(人教B版选修第二册)第05讲 正态分布(解析版).pdf VIP
- 2025年支部书记抓基层党建工作述职报告范文.docx VIP
- 高教社2023马工程国际私法学教学课件u5.pptx VIP
- 学生宿舍卫生检查表.docx VIP
- 年末存货盘点表.docx VIP
原创力文档

文档评论(0)