| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

哈夫曼树应用数据结构课程设计报告

文***品

贡献于2021-11-10

字数:7050


数结构
课程设计报告


设计题目:哈夫曼树应



专 业 : 软件工程
班 级 : 软件
学 生 :
学 号 :
指导教师 :
起止时间 :20110704—20110708





2011 年 春季 学期


目 录
.具体务 …2
1功……………………………………………………………………………2
2分步实施………………………………………………………………………2
3求……………………………………………………………………………2
二.哈夫曼编码 2
1问题描述 2
2基求 3
3实现提示 3
三.设计流程图 4
1建立哈夫曼树…………………………………………………………………4
2编码……………………………………………………………………………5
3译码……………………………………………………………………………6
4程序…………………………………………………………………………7
四.设计概 8
1问题哈夫曼定义8
2实现功函数………………………………………………………8
3功模块………………………………………………………………………8
五.源程序 9
六.调试分析 15
七.心体会 18
八.参考文献 18



















题目:哈夫曼树应
1功:
1.终端读入字符集nn字符n权值建立哈夫曼树存文件hfmTree中已存中哈夫曼树直观方式(树)显示终端
2.利已建哈夫曼树(存文件htmTree中读入)文件ToBeTran中正文进行
编码然结果存入文件CodeFile中输出结果文件CodeFile紧凑格式先终端行50代码时字符形式编码文件写入文件CodePrint中
3.利已建哈夫曼树文件CodeFile中代码进行译码结果存入文件TextFile中输出结果

2分步实施:
1) 初步完成总体设计搭框架确定机话界面确定函数数
2) 完成低求:完成功1
3) 进步求:完成功23兴趣学扩充系统功
3求:
1)界面友函数功划分
2)总体设计应画流程图
3)程序加必注释
4) 提供程序测试方案
5) 程序定起测试宁功少运行起运行程序没价值

二哈夫曼编码
1 问题描述
利赫夫曼编码进行通信提高信道利率缩短信息传输时间降低传输成求发送端通编码系统传输数预先编码接收端传数进行译码(复原)双工信道(双传输信息信道)端需完整编译码系统试样信息收发站编写赫夫曼码编译码系统
2 基求
完整系统应具功:
(1) I:初始化(Initialization)终端读入字符集nn字符n权值建立赫夫曼树存文件hfmTree中
(2) E:编码(Encoding)利已建赫夫曼树(存文件hfmTree中读入)文件ToBeTran中正文进行编码然结果存入文件CodeFile中
(3) D:译码(Decoding)利已建赫夫曼树文件CodeFile中代码进行译码结果存入文件Textfile中
3 实现提示
(1) 编码结果文方式存储文件Codefile中
(2) 户界面设计菜单方式:显示述功符号加Q表示退出运行Quit请户键入选择功符功执行完毕显示菜单直某次户选择Q止
(3) 程序次执行程中第次执行I DC命令赫夫曼树已存必读入次执行中定执行I命令文件hfmTree早已建
三设计流程图
建立哈夫曼树:

开始
n<1
Renturn 0
m2*n1
i1iWhile(getchar()n
输入字符权值
HT[i]chz
HT[i]weightw
HT[i]parent0
HT[i]lchild0
HT[i]rchild0



编码:

开始
cd[start]1

i1istartn1
cd[start]0
cIfHT[i]parent f0fHT[f]parent
HT[f]childl
结束

译码:
开始
Lk

output_file
coutcant open file
Return 1
Coutcan’t open file
Strcmp(H[i]hlchild0
结束
i1i
while(h[k]0)

j0j
K0

h[j]\0
输出译码


程序:
开始
main
建立哈夫曼树
choiceI||choiceI
结束
编码

return 0
choiceE||choicee
choiceD||choiced
choiceQ||choiceq
编码




四概设计
1)问题哈夫曼定义:
1哈夫曼树节点数类型定义:
typedef struct{ 赫夫曼树结构体
char ch
int weight 权值
int parentlchildrchild
}htnode*hfmtree
2)实现功函数
1void hfmcoding(hfmtree &HThfmcode &HCint n)初始化哈夫曼树处理InputHuffman(Huffman Hfm)函数数哈夫曼规建立2叉树函数块调Select()函数
2void Select(hfmtree &HTint aint *p1int *p2) Select函数选出HT树a止权值parent02节点
3 int main()
函数: 利已建哈夫曼树(存文件hfmtreetxt中读入)
文件中正文进行编码然结果存入文件codefiletxt中果正文中没编码字符键盘读入存储ToBeTran文件中读入ToBeTran中编码容编码哈夫曼编码存储CodeFile中
4Encoding
编码功:输入字符进行编码
5Decoding
译码功: 利已建哈夫曼树文件codefiletxt中代码进行译码结果存入文件textfiledat 中
Print() 印功函数:输出哈夫曼树字符权值应编码
6函数简说明函数设计分支语句户挑选实现功
链树存储然分调统计频数函数排序函数建立哈夫曼函数编码函数译码函数实现功
3)功模块:
哈夫曼编码译码器
初始化哈夫曼树
编码
译码
印哈夫曼树
印编码






五源程序
#include
#include
#include
#include
#include
typedef struct{ 哈夫曼树结构体
char ch
int weight 权值
int parentlchildrchild
}htnode*hfmtree
typedef char **hfmcode

void Select(hfmtree &HTint aint *p1int *p2) Select函数选出HT树a止权值parent02节点
{
int ijxy
for(j1j if(HT[j]parent0){
xj
break
}
}
for(ij+1i if(HT[i]weight xi 选出节点
}
}
for(j1j if(HT[j]parent0&&xj)
{
yj
break
}
}
for(ij+1i {
if(HT[i]weight {
yi 选出次节点
}
}
if(x>y){
*p1y
*p2x
}
else
{
*p1x
*p2y
}
}
void hfmcoding(hfmtree &HThfmcode &HCint n) 构建哈夫曼树HT求出n字符哈夫曼编码HC
{
int istartcfmw
int p1p2
char *cdz
if(n<1){
return
}
m2*n1
HT(hfmtree)malloc((m+1)*sizeof(htnode))
for(i1i {
printf(请输入第d字符信息权值:i)
scanf(cd&z&w)
while(getchar()'\n')
{
continue
}
HT[i]chz
HT[i]weightw
HT[i]parent0
HT[i]lchild0
HT[i]rchild0
}

for(i {
HT[i]ch'0'
HT[i]weight0
HT[i]parent0
HT[i]lchild0
HT[i]rchild0
}
for(in+1i {
Select(HTi1&p1&p2)
HT[p1]parentiHT[p2]parenti
HT[i]lchildp1HT[i]rchildp2
HT[i]weightHT[p1]weight+HT[p2]weight
}

HC(hfmcode)malloc((n+1)*sizeof(char *))
cd(char *)malloc(n*sizeof(char))
cd[n1]'\0'

for(i1i {
startn1
for(cifHT[i]parentf0cffHT[f]parent)
{
if(HT[f]lchildc)
{
cd[start]'0'
}
else
{
cd[start]'1'
}
}

HC[i](char*)malloc((nstart)*sizeof(char))
strcpy(HC[i]&cd[start])
}
free(cd)
}


int main(){
char code[100]h[100]hl[100]
int nijkl
ifstream input_file 文件输入输出流
ofstream output_file
char choicestr[100]
hfmtree HT
hfmcode HC
cout<<\n
cout<< <<软件092班<< <<姓名张耀飞<< <<学号:3090921040\n
while(choice'Q'&&choice'q') choice值qQ时循环
{
cout<< <<*************************哈夫曼编码译码器*************************\n
cout<< < cout<<请输入您操作步骤:
cin>>choice
if(choice'I'||choice'i') 初始化赫夫曼树
{
cout<<请输入字符数:
cin>>n
hfmcoding(HTHCn)
for(i1i {
cout< }
output_fileopen(hfmTreetxt)
if(output_file){
cout< return 1
}
for(i1i {
output_file<<(< }
output_fileclose()
cout<<哈夫曼树已创建完毕已放入hfmTreetxt文件中< }
else if(choice'E'||choice'e') 进行编码字符放入ToBeTrantxt码值放入CodeFiletxt中
{
printf(请输入字符:)
gets(str)
output_fileopen(ToBeTreetxt)
if(output_file)
{
cout< return 1
}
output_file< output_fileclose()
output_fileopen(CodeFiletxt)
if(output_file){
cout< return 1
}
for(i0i for(j0j {
if(HT[j]chstr[i])
{
output_file< break
}
}
}
output_fileclose()
cout<<\n
cout<<编码完毕已存入CodeFiletxt文件\n
input_fileopen(CodeFiletxt) CodeFiletxt中读入编码输出终端
if(input_file)
{
cout< return 1
}
input_file>>code
cout<<编码码值:< input_fileclose()
}
else if(choice'D'||choice'd') 读入CodeFiletxt中编码进行译码译出字符放入Textfiletxt中
{
input_fileopen(CodeFiletxt)
if(input_file){
cout< return 1
}
input_file>>h
input_fileclose()
output_fileopen(Textfiletxt)
if(output_file)
{
cout< return 1
}
k0
while(h[k]'\0') 先编码中前字符编码相较然移
{
for(i1i lk
for(j0j hl[j]h[l]
}
hl[j]'\0'
if(strcmp(HC[i]hl)0)
{
output_file< kk+strlen(HC[i])
break
}
}
}
output_fileclose()
input_fileopen(Textfiletxt)
if(input_file){
cout< return 1
}
input_file>>h
cout< input_fileclose()
cout<<译码结束字符已存入Textfiletxt文件中< }
else if(choice'Q'||choice'q') 退出程序
{
exit(0)
}
else 果选选项外户重新选择
{
cout<<您没输入正确步骤请重新输入< }
cout< }
return 0
}
六调试分析



编码



译码


退出




七实验心体会

课程设计中编写源代码调试中出现少错误遇麻烦困难调试中错误终找出错误修改正确够执行程序中通分析学:
定义头文件时少写头文件肯定会出错没定义引相关头文件必定调试通
执行译码操作时知什原总编译二进制数编译成字符连接号连接起序直接放起视觉效果遗憾哈夫曼编码译码器没老师求样完成编文件功设计失败处

通次数结构课程设计学课没懂知识求哈夫曼树哈夫曼编码译码算法更加深刻解更巩固课堂中学关哈夫曼编码知识真正学会种算法求解算法时问题加思索做首先先概解接着详细分析步做前否处理相似问题步骤必定会利做出
次课程设计编辑中犯应错误设计统计字符合时忘记应该样保存数文件操作生疏断分析明确改正错误疏漏程序更高质量
八.参考文献:

[1 ]  谭浩强 C 程序设计(第二版) [M] 北京清华学出版社1999 161 163
[2 ]  谭浩强张基温唐永炎 C 语言程序设计教程(第二版) [M] 北京高等教育出版社1998 113 115
[3 ]  严蔚敏吴伟民 数结构(C 语言版) [M] 北京清华学出版社2002 55 58
[4]  李士峰张谢华孙清滇 ActiveX文档技术VB 程序设计网络课件制作中应 [5 ]  王 颖王正洲 汉诺塔问题迭代算法实现分析[J ] 合肥联合学学报1999




考核成绩评定:






























签字:
年 月 日
西an 理 工 学

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

信息论实验报告(实验四、哈夫曼编码)

学生实验报告院别电子工程学院课程名称 信息论与编码班级实验名称实验四、哈夫曼编码姓名实验时间学号指导教师成绩报 告 内 容一、实验目的和任务1、 理解信源编码的意义;2、 熟悉 MATLAB程序设计; 3、 掌握哈夫曼编码的方法及计算机实现; 4、 对给定信源进行香农编码,并计算编码效率; 二、实验原理介绍1、把信源符号按概率大小

文***品 1年前 上传251   0

数据结构课程设计报告最小生成树Kruskal算法

计算机科学与技术系课程设计报告 2014-2015学年第二学期课程数据结构课程设计名称Kruskal算法求最小生成树学生姓名 学号 专业班级 软件工程指导教师 2014年X月题目:设计程序完成如下功能:对给定过的网和起点,用kruskal算法的基本思想求解其所有的最小生成树1、问题分析和任务定义根据课设题目要求,拟将整体程序分为三大模块

文***品 1年前 上传209   0

东方曼哈顿楼书

东方曼哈顿 楼书引言:世界最好的博物馆区、世界文化区、全球富豪区、国际高档商业区……无论怎样的美誉,纽约曼哈顿上东区都当之无愧。舒适考究的到总让人心怀感激的生活,但享用者不仅要富有。贵族篇:历史是迁徙的连缀,人类在迁徙中追逐进步和完美 P1:1880年,一次迁徙没有载入史册,但大多数迁徙者都主宰过历史,这次空前绝后的行动造就了上东区——曼哈顿最昂贵最优雅的区域。王公贵

龙***成 9年前 上传479   0

数据结构实验报告《三、串及其应用》

数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 时间:2011年X月X日数据结构实验报告- - - -

文***享 3年前 上传1308   0

哈夫管技术规范书

本标准规定了电力电缆用改性聚丙烯(MPP)哈夫管(以下简称“管材”)的产品规格、连接方式、管材结构、要求、试验方法、检验规则和标志、运输、贮存。

乂***夏 5年前 上传1150   0

中瑞.曼哈顿空中别墅可行性研究报告

摘 要 为了能将以往所学专业知识加以实践整合,真正掌握房地产开发的整个过程,本次我们小组的毕业论文课题确定为“中瑞·曼哈顿空中别墅可行性研究与营销策划”,并以小组分工合作的形式共同完成。本文站在开发商的角度,完成对项目整个过程包括前期市场调查直至营销策划的开发。本文包括六大部分,即项目概况、市场调查、财务分析、风险分析、营销策划,研究结论以及建议。市场调查是基础,本文从项目的市调工作着手,通

项***锐 15年前 上传3473   0

数据结构和算法课程设计题目

XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7----2009.6.27一、《数据结构与算法》课程设计参考题目(一)参考题目一(每位同学选作一个,同组人员

文***品 11个月前 上传382   0

数据结构课程设计报告——图书管理系统

课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 姓 名: 班级学号: 指导教师:

文***享 3年前 上传681   0

车牌号管理系统数据结构课程设计报告

XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 姓 名: 学 号: 专业班级: 软件工程 系 (院): 计算机工程学院

文***享 3年前 上传431   0

数据结构课程设计报告n维矩阵乘法

设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。

文***品 4年前 上传712   0

《曼哈顿的中国村》读后感(精选多篇)

《曼哈顿的中国村》读后感(精选多篇)第一篇:《曼哈顿的中国村》读后感美国中部堪萨斯州的曼哈顿远逊色于那个我们自接触美国的相关情况而知晓的繁华曼哈顿,简直一个天上,一个地下。这个曼哈顿是一个小小的典型美国小城,由于中国留学生的大量涌入而得名“中国村”。在这本书里故事主要围绕苛月和老熊、高洋和一鸣、安怡和建法、仁奇和他的小新媳妇儿,这四个在美中国留学生家庭的故事展开叙述的,随着他们的毕业

l***u 11年前 上传497   0

切比雪夫不等式及其应用论文

切比雪夫不等式及其应用论文目 录第一章 绪论 1第二章 切比雪夫不等式的基本理论 32.1 切比雪夫不等式的有限形式和积分形式 32.2 切比雪夫不等式的概率形式 4第三章 切比雪夫不等式在概率论中的应用 73.1 估计概率 73.1.1 随机变量取值的离散程度 73.1.2 随机变量取值偏离超过的概率 73.1.3 估计事件的概率 73.1.4 估计随机变量落入

文***品 3年前 上传796   0

数据结构实习报告

数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、  合作人及其分工二、设计说明1、  主要的数据结构设计说明;2、  程序的主要流程图;3、  程序的主要模块,要求对主要流程图中出现的模块进行说明4、  程序的主要函数及其伪代码说明

s***n 8年前 上传1049   0

数据结构(C语言版)课程设计报告表达式求值说明书

XX大学数据结构课程设计说明书题目: 表达式求值 院 系: 计算机科学与工程学院 专业班级: 计算机班 学 号: 学生姓名: 指导教师:  2013年 X 月X 日

文***享 3年前 上传540   0

数据结构课程设计报告多关键字排序高考排序

XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 名: 学 号: 专业班级: 网络工程 系 (院): 计算机工程学院

文***享 6个月前 上传190   0

算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: 座 号: 姓 名: 2012年 X月 X 日一、要解决的问题商店货架以栈

文***品 1年前 上传324   0

设计散列表实现电话号码查找系统数据结构课程设计

XX学院课程设计报告书专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》题 目:设计散列表实现电话号码查找系统班 级: 学    号: 姓    名: 同 组 人 员: 无指 导 老 师: 完 成 时 间: 摘要电话号码的查找系统软件是现在很实用工具,随着时代的发展,信息化得发

文***品 2年前 上传581   0

高校教材管理系统数据结构课程设计

数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统 二、课程设计应解决的主要问题: (1) 实现出版社、教材类型等的管理

文***品 3年前 上传782   0

数据结构文本编辑器课程设计

数据结构课程设计报告一. 需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

文***享 1年前 上传307   0

数据结构课程设计图的建立与输出

数据结构课程设计设计题目:图的建立与输出系 别: 电子与信息工程学院 专 业: 电子信息工程 班 级: 级班 姓 名: 学 号: 指导教师:

文***享 6个月前 上传179   0

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文   关于数据结构课程设计心得体会(1)   这学期开始两周时间是我们自己选题上机的时间, 这学期开始两周时间是我们自己选题上机的时间,虽然 上机时间只有短短两个星期但从中确实学到了不少知识。 上机时间只有短短两个星期但从中确实学到了不少知识。   数据结构可以说是计算机里一门基础课程, 据结构可以说是计算机里一门基础课程,但我觉得我们一低 计算机里一门

焦***宝 5年前 上传1419   0

数据结构课程设计舞伴配对程序

沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导教师:完成日期:2014年目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 2第2章 详细设计 32.1主函数的流程图 32.

文***享 1年前 上传290   0

数据结构课程设计运动会分数统计(C语言版)

数据结构课程设计运动会分数统计(C语言版)目 录第一章 绪 论 1 1.1 运动会分数统计系统的背景 1 1.2 运动会分数统计系统的任务和目标 1第二章 运动会分数统计系统的需求分析 2 2.1 功能需求 2 2.2 功能模块 2 2.3 数据要求 3 2.4 性能要求 3第三章 系统开发工具及关键技术 4 3.1 系统开

文***品 3年前 上传644   0

数据结构实践报告

 数据结构实践报告学 号: 姓 名: 班 级: 班 指导老师: 时 间: 2016-12-21

文***享 1年前 上传595   0

数据结构实验报告

实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、 了解单链表、循环链表和双链表的基本知识;2、 掌握算法思想和数据结构的描述;3、 掌握链表的插入、删除的相关语句及基本方法。二、 实验步骤

z***u 2年前 上传335   0