树的应用(哈夫曼编/译码器)

gangzichh 2005-11-28 09:27:59
问题描述:设计一个哈夫曼码的编/译码系统
基本要求:一个完整的系统应具有以下功能:
(1)I:初始化。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中
(2)E:编码。利用已建好的哈夫曼树,对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中
(3)D:译码。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中
(4)T:显示哈夫曼树。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上


大家要是有兴趣的话,帮忙做一下吧
谢谢了
...全文
303 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dear_jasmine 2005-12-24
  • 打赏
  • 举报
回复
void HuffmanTree( HuffmanTree &HT , int * w, int n ) {
//w 存放n 个字符的权值(均>0),构造哈夫曼树HT
if (n<=1) return;
m=2* n-1;
HT=( HuffmanTree )malloc( (m+1) * sizeof( HTNode ) );
for( p=HT, i=1; i<=n; ++i, ++p, ++w )
* p={ * w, 0, 0, 0 } ; //用给定的n个权值构造n棵只有一个根结点的二叉树
//按构造哈夫曼树的步骤,建哈夫曼树
for ( ; i<m; ++i, ++p ) {
//在HT[1..i-1] 选择parent为0且weight最小的两个结点,其序号分别为s1和s2
Select(HT, i-1, s1, s2);
HT[s1]. parent =i ; HT[s2].parent=i ; //HT[i]存放新子树的根结点
HT[i].lchild=s1 ; HT[i].rchild=s2 ;
HT[i].weight=HT[s1].weight+HT[s2].weight ;
}
} //HuffmanTree
gangzichh 2005-12-22
  • 打赏
  • 举报
回复
好好学习吧!
gangzichh 2005-12-22
  • 打赏
  • 举报
回复
作业吧,努力吧!
相信你行的呀!,这个东西最好自己做比较好的
努力吧!
zzfooo 2005-12-22
  • 打赏
  • 举报
回复

我学数据结构的时候前面的几个功能都实现了,不过"(4)T:显示哈夫曼树。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上" 好像有点麻烦
zdjray 2005-12-08
  • 打赏
  • 举报
回复
自己做吧,要不ds是学不好的,找找书

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧