91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-06
  • 語言: C/C++
  • 標簽: 哈夫曼樹??

資源簡介

利用哈夫曼編碼進行通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發送端通過一個編碼系統對待傳數據預先編碼,在接收端將傳來的數據進行譯碼,請設計這樣的一個簡單編/譯碼系統。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#define?MAX_NUM?2000
using?namespace?std;
int?ijn;
int?w[27];
char?str[200];
char?ch;
typedef?struct{
??????char?s;
??????int?num;
}Node;
Node?node[27];??//用結構數組存放輸入的字符及其權值
typedef?struct?{
????unsigned?int?weight;
????unsigned?int?parentlchildrchild;
}HTNode*HuffmanTree;??//?動態分配數組儲存哈夫曼樹
typedef?char?*?*?HuffmanCode;
?HuffmanTree?HT;
?HuffmanCode?HC;
?void?Select(HuffmanTree?HTint?endint?&s1int?&s2)
?//在HT[1..end]中選擇parent為0且weight最小的兩個結點s1和s2end為總長度
?{?int?min1=MAX_NUM;
???int?min2;
???for(i=1;i???{?if((HT[i].parent==0)?&&?(HT[i].weight?????{?s1=i;
???????min1=HT[i].weight;
?????}
???}
???min2=MAX_NUM;
???for(j=1;j???{?if((HT[j].parent==0)?&&?(s1!=j)?&&?(HT[j].weight?????{?s2=j;
???????min2=HT[j].weight;
?????}
???}
?}
?fstream?outfile1(“hufmtree.txt“ios::out);
?fstream?outfile2(“TreePrint.txt“ios::out);
?void?printtree(int?mHuffmanTree?&HTint?i)
?{
?if(HT[m].lchild!=0||HT[m].rchild!=0)
?{
?for(int?p=0;p ?cout<<“?“outfile1<<“?“outfile2<<“?“;
?cout< ?outfile1< ?outfile2< ?printtree(HT[m].lchildHTi+3);
?printtree(HT[m].rchildHTi+3);
?}
?if(HT[m].lchild==0?&&?HT[m].rchild==0){
?for(int?p=0;p ?cout< ?outfile1< ?outfile2< ?}
?}???//遞歸算法,以凹入形式輸出樹
void?HuffmanCoding(?HuffmanTree?&HTHuffmanCode?&HCint?*wint?n)
//構造哈夫曼樹HT,并求出n個字符的哈夫曼編碼HC.
{if(n<1)?return;
?int?m=2*n-1;
?int?s1s2;
?HT=(HuffmanTree)malloc((m+1)*?sizeof(HTNode));?//0號單元未用
?HuffmanTree?p;
?for(p=HT+1i=1;i<=n;++i++p++w)
?{ p->weight=*w;
p->parent=0;
p->lchild=0;
p->rchild=0;
?}
?for(;i<=m;++i++p)
?{ ????p->weight=0;
p->parent=0;
p->lchild=0;
p->rchild=0;
?}
?for(i=n+1;i<=m;++i){??//建哈夫曼樹
?????Select(HTis1s2);
?????HT[s1].parent=i;
?????HT[s

評論

共有 條評論