头歌哈夫曼实验代码
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

SY1.cpp 2.0 KiB

2 yıl önce
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // /Users/zhangzhiqi/Library/Mobile Documents/M6HJR9W95L~com~textasticapp~textastic/Documents/CLionProjects/TouGe-Huffman-Tree/SY1.cpp
  2. // Copyright (c) 2022.
  3. // @Time : 2022/4/30 13:9:13
  4. // @Author : 张稚琦
  5. // @Address: 湖北理工学院腾龙公寓 5620
  6. // @Email : zhang@zhang.mba / zhangzhiqi828@gmail.com / zhangzhiqi@lh83.onmicrosoft.com / 2272358828@qq.com
  7. // @File : SY1.cpp
  8. // @LastModified: 2022/4/30 下午1:07
  9. // @ProjectName : TouGe_Huffman_Tree
  10. # include <stdio.h>
  11. # include <iostream>
  12. # include <string.h>
  13. using namespace std;
  14. typedef struct //define structure HuffmanTree
  15. { int weight;
  16. int parent,lchild,rchild;
  17. }HTNode,*HuffmanTree;
  18. typedef char ** HuffmanCode;
  19. void Select(HuffmanTree HT,int i,int &s1,int &s2) ;//选出HT树到i为止,权值最小且parent为0的2个节点
  20. void HuffmanTreeing(HuffmanTree &HT,int *w,int n);//构建哈夫曼树函数
  21. void output(HuffmanTree HT,int m);//输出哈夫曼树
  22. int main()
  23. {
  24. HuffmanTree HT;
  25. HuffmanCode HC;
  26. int n,i;
  27. int *w;
  28. scanf("%d",&n);
  29. w=(int *)malloc(n*sizeof(int));
  30. for(i=0;i<n;i++)
  31. {
  32. scanf("%d",&w[i]);
  33. }
  34. HuffmanTreeing( HT , w ,n );
  35. cout<<"哈夫曼树:"<<endl;
  36. output(HT,2*n-1);
  37. return 0;
  38. }
  39. void Select(HuffmanTree HT,int i,int &s1,int &s2)
  40. { //选出HT树到i为止,权值最小且parent为0的2个节点
  41. //s1 is the least of HT[].weight
  42. //s2 is the second least of HT[].weight
  43. /********** Begin **********/
  44. /********** End **********/
  45. }
  46. void HuffmanTreeing(HuffmanTree &HT,int *w,int n) //构建哈夫曼树函数
  47. { // w存放n个字符的权值(均>0),构造赫夫曼树HT
  48. /********** Begin **********/
  49. /********** End **********/
  50. }
  51. void output(HuffmanTree HT,int m)
  52. { //输出哈夫曼树
  53. for(int i=1;i<=m;++i)
  54. {
  55. cout<<"HT["<<i<<"] ="<<HT[i].weight<<"\t"<<HT[i]. parent<<"\t";
  56. cout<<"\t" <<HT[i]. lchild <<"\t" <<HT[i]. rchild<<endl;
  57. }
  58. }