欢迎来到毕设资料网! | 帮助中心 毕设资料交流与分享平台
毕设资料网
全部分类
  • 毕业设计>
  • 毕业论文>
  • 外文翻译>
  • 课程设计>
  • 实习报告>
  • 相关资料>
  • ImageVerifierCode 换一换
    首页 毕设资料网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    哈夫曼树课程设计

    • 资源ID:1417083       资源大小:52.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:100金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: QQ登录
    下载资源需要100金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

    哈夫曼树课程设计

    1、 数据结构数据结构课程设计课程设计 -哈夫曼树编码哈夫曼树编码 哈夫曼树编码哈夫曼树编码 一、一、实现功能 给出一串字符,根据每个字符出现的频数进行编码,将文字转化 为二进制的字符组成的字符串,即加密。加密过程根据频数生成哈夫 曼树,然后进行遍历,得到二进制编码。 二、二、 哈夫曼算法叙述 (1).根据给定的 n 个权值w1,w2,wn构成 n 棵二叉树的集 合 F=T1,T2,Tn,其中每棵二叉树 Ti 中只有一个带权值为 Wi 的 根结点,其左右子树均为空。 (2).在 F 中选取两棵根结点的权值最小的树作为左右子树构造 一棵新的二叉树, 且置新的二叉树的根结点的权值为其左右子树上根 结点

    2、的权值之和 (3).在 F 中删除这两棵树,同时将新得到的二叉树加入 F 中。 (4).重复(2)和(3) ,直到 F 中只含一棵二叉树为止,即哈 夫曼树。 三、三、根据书上算法介绍进行代码编写(VC+编写) 1、哈夫曼树的建立、初始化和遍历 void CHFMDlg:CrtHuffmanCoding(HuffmanTree m=2*n-1; HT=(HuffmanTree)malloc(m+1)*sizeof(HTNode); for(i=1; i=n; +i) /1-n 号存放叶子结点,初始化 HTi.weight=*w; HTi.LChild=0; HTi.parent=0; HTi.R

    3、Child=0; for(i=n+1; i=m; i+) HTi.weight=0; HTi.LChild=0; HTi.parent=0; HTi.RChild=0; /非叶子结点初始化 for(i=n+1; i=m; i+) /创建非叶子结点,建哈夫曼树 Select(HT,i-1, HTs1.parent=i; HTs2.parent=i; HTi.LChild=s1; HTi.RChild=s2; HTi.weight=HTs1.weight+HTs2.weight; char *cd; int j,start,p; unsigned int c; HC=(HuffmanCode)ma

    4、lloc(n+1)*sizeof(char *); /分配 n 个编码的头指针 cd=(char *)malloc(n*sizeof(char); /分配求当前编 码的工作空间 cdn-1=0; /从右向左逐位存放编码,首先存放编码结束符 for(j=1; j=n; j+) /求 n 个叶子结点对应的哈夫曼编码 start=n-1; /初始化编码起始指针 for(c=j,p=HTj.parent; p!=0;c=p,p=HTp.parent) /从叶子到根结点遍历求编码 if( HTp.LChild=c) cd-start=0; /左分支标 0 else cd-start=1; /右分支标 1

    5、 HCj=(char *)malloc(n-start)*sizeof(char); /为第 i 个编码分配空间 strcpy(HCj, free(cd); 2、 void CHFMDlg:Select(HuffmanTree HT, int n, int *s1, int *s2) /在 HT1HTi-1的范围内选择两个 parent 为 0 /且 weight 最小的结点,其序号分别赋值给 s1、s2 int i,min; for(i=1; i=n; i+) if(HTi.parent=0) min=i; break; for(i=1; i=n; i+) if(HTi.parent=0) if(HTi.weightHTmin.weight) min=i; *s1=min; for(i=1; i=n; i+) if(HTi.parent=0 break; for(i=1; i=n; i+) if(hti.parent=0 *s2=min; 四、 在 MFC 中进行代码编译 添加列表框显示每个字符的编码 界面如下:CHFMDlgCHFMDlg 对话框对话框 void CHFMDlg:SetCtrlStyle(HWND hWnd, DWORD dwNewStyle) /设置列表控件风格 DWORD dwOldS


    注意事项

    本文(哈夫曼树课程设计)为本站会员(毕***)主动上传,毕设资料网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请联系网站客服QQ:540560583,我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们
    本站所有资料均属于原创者所有,仅提供参考和学习交流之用,请勿用做其他用途,转载必究!如有侵犯您的权利请联系本站,一经查实我们会立即删除相关内容!
    copyright@ 2008-2025 毕设资料网所有
    联系QQ:540560583