全文预览

建立赫夫曼树课程设计-数据结构

上传者:菩提 |  格式:doc  |  页数:11 |  大小:70KB

文档介绍
[s1].parent=i;tree[s2].parent=i;tree[i].lchild=s1;tree[i].rchild=s2;  tree[i].weight=tree[s1].weight+tree[s2].weight;}}voidhuffmancode(huftreetree[],intn)//输出huffman编码{intstart,c,i,f;printf("哈夫曼树为:\n");printf("元素-----元素权值-----父结点-----左孩子-----右孩子\n");for(i=1;i<=2*n-1;i++){printf("%d-----%d-----%d-----%d-----%d\n",i,tree[i].weight,tree[i].parent,tree[i].lchild,tree[i].rchild);}}voidmain(){inti=0,n=0;int*w,weight[MAX];huftreetree[MAX];w=weight;charin='6';while(in!='3'){printf("1建立初始化赫夫曼树\n2输出赫夫曼树\n3退出\n请输入(1--3):\n");scanf("%c",&in);switch(in){case'1':printf("请输入待编码字符个数:");printf("请输入字符和对应权值:");for(i=1;i<=n;i++){printf(">>>");scanf("%c%d",cha+i,weight+i);}huffman(tree,w,n);break;//生成huffman树case'2':huffmancode(tree,n);break;}}}四.调试分析:测试数据和结果:调试得到输出结果如图:当建立一个含有5个初始结点,权值分别为2,4,6,8,10的赫夫曼树的测试结果:

收藏

分享

举报
下载此文档