- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
赫夫曼编码课程设计
课程设计报告
设计题目: 求赫夫曼编码
专 业 电子信息科学与技术
班 级 0802
学 生 应俏东
学 号 080802224
完成时间 5月1日
扬州大学物理科学与技术学院
2011 年 春季 学期
题目:求赫夫曼编码
功能:当用户输入字符串中各字符出现的次数时,能返回各字符的赫夫曼编码。可以参考教材p146的算法描述。
分步实施:
1.创建结构体数组以存放各结点的信息
2.对各结点建立赫夫曼树
3.逆向求每个字符的赫夫曼编码
4.输出每个字符的赫夫曼编码
要求:1.界面友好,函数功能要划分好
2.总体设计应画一流程图
3.序要加必要的注释
4.要提供程序测试方案
一:源程序:
#includestdio.h
#includestdlib.h
#includestring.h
typedef struct
{unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;//动态分配数组存储赫夫曼树
typedef char**HuffmanCode;//动态分配数组存储赫夫曼编码表
void Select(HuffmanTree HT,unsigned int i,unsigned int*s1,unsigned int*s2)
//选出无母结点并权值最小的两结点并标记为s1、s2
{unsigned int j,k=1;
while(HT[k].parent)
k++;
{for(j=k+1;j=i;j++)
{while(HT[j].parent)
j++;
if(HT[k].weightHT[j].weight)
k=j;
}
*s1=k;
HT[*s1].parent=i+1;
}
k=1;
while(HT[k].parent)
k++;
{for(j=k+1;j=i;j++)
{while(HT[j].parent)
j++;
if(HT[k].weightHT[j].weight)
k=j;
}
*s2=k;
HT[*s2].parent=i+1;
}
}
void HuffmanCoding(HuffmanTree HT,HuffmanCode HC,unsigned int*w,unsigned int n)
//w存放n个字符的全值(均0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC。
{unsigned int c,f,i,m,s1,s2,start;
char*cd;
HuffmanTree p;
if(n1)return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//0号单元未用
for(p=HT+1,i=1;i=n;++i,++p,++w)
{p-weight=*w,p-parent=0,p-lchild=0,p-rchild=0;}
for(;i=m;++i,++p)
{p-weight=0,p-parent=0,p-lchild=0,p-rchild=0;
}
for(i=n+1;i=m;++i)//建赫夫曼树
{Select(HT,i-1,s1,s2);
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;//母结点权值为两子结点权值之和
}
cd=(char*)malloc(n*sizeof(char));//分配求编码的工作空间
cd[n-1]=\0;
for(i=1;i=n;++i)//逐个字符求赫夫曼编码
{start=n-1;//编码结束符位置
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)//从叶子到根逆向求编码
if(HT[f].lchild==c)
cd[--start]=0;
else cd[--start]=1;
HC[i]=(char*)malloc((n-start)*sizeof(char));//为第i个字符编码分配空间
您可能关注的文档
- 灯市场分析页.pdf
- 2013年积分兑换方案(第一季度).pptx
- 《白酒企业跟踪-泸州老窖、五粮液、贵州茅台》.doc
- 会计分录缩印.doc
- 16.2 一汽-大众DSERP指导手册-保养套餐.pdf
- 企业文化复习资料 汇总.doc
- 只是没有了你而已,又不是没了全世界.doc
- 《政治经济学》平时作业.doc
- 企业成长:从人治到法治.docx
- 企业战略管理(王巧霞).ppt
- 在线网课学习课堂《水质工程学-物理化学处理(湖北理工学院)》单元测试考核答案.docx
- 在线网课学习课堂《税法(东北)》单元测试考核答案.docx
- 商业地产VS住宅房地产经营与管理专业教学商业地产营销策划与实务运营1.pptx
- 在线网课学习课堂《说农经(云南农业职业技术学院)》单元测试考核答案.docx
- 在线网课学习课堂《思想道德与法治(广州中医药)》单元测试考核答案.docx
- 在线网课学习课堂《思想道德与法治(贵州水利水电职业技术学院)》单元测试考核答案.docx
- 外贸基础-函电与单证知到智慧树期末考试答案题库2024年秋潍坊职业学院.docx
- 外贸函电知到智慧树期末考试答案题库2024年秋山东管理学院.docx
- 在线网课学习课堂《水污染控制技术(贵州工业职业技术学院)》单元测试考核答案.docx
- 棱镜光学技术(眼镜光学技术课件).pptx
最近下载
- 中国古代文学名著赏析《红楼梦》课程大纲(85页).doc
- 两板注塑机调模方法.pdf
- 财务部管理岗位胜任素质模型.docx
- 丹佛斯变频器FC302_FC301产品说明书 操作手册.pdf
- JTG F41-2008 公路沥青路面再生技术规范(高清-有效).pdf
- GB51282-2018 煤炭工业露天矿矿山运输工程设计标准.docx
- AP宏观经济学 2019年真题 (选择题+问答题) AP Macroeconomics 2019 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 虞美人盛开的山坡 朝ごはんの歌(早饭之歌)(手嶌葵指弹吉他).pdf
- 大健康产业法律服务.PDF
- AP物理C电磁 2018年真题 (选择题+问答题) AP Physics Electricity and Magnetism 2018 Real Exam and Answers (MCQ+FRQ).pdf VIP
文档评论(0)