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

  • 大小: 8KB
    文件類型: .cpp
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-01
  • 語言: C/C++
  • 標(biāo)簽: 游程編碼??c++??

資源簡介

游程編碼與哈夫曼編碼結(jié)合,可以直接運(yùn)行。很好理解的代碼。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
using?namespace?std;
#define?n?100
#define?m?2*n-1
//碼結(jié)點(diǎn)的存儲結(jié)構(gòu)
typedef?struct{
char?ch;
char?bits[9];
int?len;
}CodeNode;
typedef?CodeNode?HuffmanCode[n+1];
//樹節(jié)點(diǎn)
typedef?struct{
int?weight;
int?lchildrchildparent;
}HTNode;
typedef?HTNode?HuffmanTree[m+1];

int?num;
double?hx=0.0;
int?lengthhigh;//輸入陣列的長和高
char?sourdata[256];//輸入中的符號們
int?pinglv[256];//輸入中每個符號的頻率
double?gailv[256];//輸入中每個符號發(fā)生的概率
char?st[256][256]s[256][256];?//st接受輸入的字符,s接受譯碼時(shí)的字符
int?YClen[256][256];?????//存儲游程長度
char?YCcode[256][256];?????//存儲游程碼
int?YCyilen[256][256];?????//存儲譯碼過程的游程長度
char?YCyicode[256][256];?????//存儲譯碼過程的游程碼
char?YCnum[256];???????//存儲每行的游程碼個數(shù)
string?YC;??????????//游程編碼值
string?liangwei[4];?????//存儲兩位二進(jìn)制數(shù)
string?sanwei[8];?????//存儲三位二進(jìn)制數(shù)
HuffmanTree?HT;???///
HuffmanCode?HC;??//創(chuàng)建霍夫曼樹
int?z;

//選擇權(quán)值最小的兩個值
void?select(HuffmanTree?HTint?kint?&s1int?&s2){
int?ij;
int?minl=32767;
//現(xiàn)在所有節(jié)點(diǎn)中選取一個權(quán)值最小的?記為s1
for(i=0;i<=k;i++){
if(HT[i].weight j=i;
minl=HT[i].weight;
}
}
s1=j;
minl=32767;
//再在除了S1的結(jié)點(diǎn)外的其他所有結(jié)點(diǎn)中,找另外一個最小的
for(i=0;i<=k;i++){
if(HT[i].weight j=i;
minl=HT[i].weight;
}
s2=j;
}
}
//統(tǒng)計(jì)相關(guān)數(shù)據(jù)?字符種類?字符出現(xiàn)的頻數(shù)和概率
void?tongji(int?highint?length){???//分析出字符陣列中出現(xiàn)的所有字符并求出其對應(yīng)的出現(xiàn)概率
for?(int?i=0;i<100;i++){????//先將每個字符出現(xiàn)的次數(shù)預(yù)設(shè)為0
pinglv[i]=0;
}
num=0;
int?sign=0;
//統(tǒng)計(jì)陣列中出現(xiàn)的字符,并存入數(shù)組中
for?(i=0;i for?(int?j=0;j sign=0;
for(int?k=0;k if?(sourdata[k]==st[i][j]){
pinglv[k]=pinglv[k]+1;
sign=1;
}
}
if?(sign==0){
sourdata[num]=st[i][j];
pinglv[num]=1;
num=num+1;
}
}
//求解每個字符對應(yīng)的概率
int?add=0;
for(i=0;i add=add+pinglv[i];//統(tǒng)計(jì)總和?為了求概率
for(i=0;i gailv[i]=(double)(double)pinglv[i]/(double)add;
}
//建立霍夫曼樹
void?chuffmantree(HuffmanTree?&HTHuffmanCode?&HCint?cnt[]char?str[]){
int?is1s2;
for(i=0;i<=2*num-1;i++){
HT[i].lchild=0;
HT[i].rchild=0;
HT[i].parent=0;
HT[i].weight=0;
}
for(i=0;i<=num;i++){
HT[i].weight=cnt[i];
}
for(i=num;i<2*num-1;i++){
select(HTi-1s1s2);
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
for(i=0;i<=num;i++){
HC[i].ch=str[i];
}
}

void?HuffmanEncoding(HuffmanTree?HTHuffmanCode?HC){
int?cpi;
char?cd[n];
int?start;
cd[num]=‘\0‘;
for(i=0;i start=num;
c=i;
while((p=HT[c].parent)>0){
start--;
cd[start]=(HT[p].lchild==c)?‘0‘:‘1‘;
c=p;
}
strcpy(HC[i].bits&cd[start]);
HC[i].len=num-start;
}
}

void?decode(HuffmanCode?HCchar?receive[]char?s[]){
char?str[268];
char?cd[9];
int?ijk=0p=0cjs;
while(receive[p]!=‘\0‘){
cjs=0;
}
for(i=1;i cd[i]=‘?

評論

共有 條評論