下载此文档

数据结构赫夫曼树.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
实验目的进一步掌握二叉树的存储结构和相应算法掌握霍夫曼树树的创建和霍夫曼编码实验环境硬件:每个学生需配备计算机一台。操作系统:DOS或Windows软件:DOS或Windows操作系统+TurboC;实验要求要求采用二叉链表作为存贮结构,完成霍夫曼树的创建输出对应数据的霍夫曼编码,并求出平均编码长度实验内容现在某电报公司假设有10字符进行编码,这10个字符的使用频率如下表所示,请创建霍夫曼树。ABCDEFGHIJ1918**********编写函数求出A~J的霍夫曼编码。#include<>#include<>#include<>typedefchar*HuffmanCode;typedefstruct{chardata;unsignedintweight;unsignedintparent,LChild,RChild;}HTNode,*HuffmanTree;//选出权值最小的两个//voidselect(HuffmanTree*ht,intn,int*s1,int*s2){inti;intmin1=0,min2=0;(*ht)[min1].weight=(*ht)[min2].weight=101;for(i=1;i<=n;i++){if((*ht)[i].weight<(*ht)[min1].weight&&(*ht)[i].parent==0) min1=i;}for(i=1;i<=n;i++){if((*ht)[i].weight<(*ht)[min2].weight&&(*ht)[i].parent==0&&min1!=i) min2=i;}*s1=min2;*s2=min1;}voidCrtHuffmanTree(HuffmanTree*ht,intn){/*w存放已知的n个权值,构造哈夫曼树ht*/intm,i,w;ints1,s2;charc;m=2*n-1;*ht=(HuffmanTree)malloc((m+1)*sizeof(HTNode));/*0号单元未使用*/printf("输入字符及权重:\n");for(i=1;i<=n;i++){/*1-n号放叶子结点,初始化*/fflush(stdin);scanf("%c%d",&c,&w);(*ht)[i].data=c;(*ht)[i].weight=w;(*ht)[i].LChild=0;(*ht)[i].parent=0;(*ht)[i].RChild=0;}for(i=n+1;i<=m;i++){(*ht)[i].weight=0;(*ht)[i].LChild=0;(*ht)[i].parent=0;(*ht)[i].RChild=0;}/*非叶子结点初始化*//*创建非叶子结点,建哈夫曼树*/for(i=n+1;i<=m;i++){/*在(*ht)[1]~(*ht)[i-1]的范围内选择两个parent为0且weight最小的结点,其序号分别赋值给s1、s2返回*/select(ht,i-1,&s1,&s2);(*ht)[s1].parent=i;(*ht)[s2].parent=i;(*ht)[i].LChild=s1;(*ht)[i].RChild=s2;(*ht)[i].weight=(*ht)[s1].wei

数据结构赫夫曼树 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wenjun1233211
  • 文件大小72 KB
  • 时间2019-11-18