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

  • 大小: 227KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-21
  • 語言: C/C++
  • 標簽: C語言??

資源簡介

在雙工通訊中利用哈夫曼編碼和譯碼。功能: 1) 初始化:從鍵盤讀入字符集大小n,以及n個字符和相應的權值,建立哈夫曼樹,并存入文件A中。 2) 編碼:利用已經建好的哈夫曼樹,對文件B中的正文進行編碼,然后將結果存入文件C中。 3) 譯碼:利用已經建好的哈夫曼樹將文件C中的代碼進行譯碼,結果存入文件D中。

資源截圖

代碼片段和文件信息

#include??
#include??
#include??
#include??
#include??

//typedef?int?TElemType;?
const?int?UINT_MAX=1000;?
char?str[50];?

typedef?struct?
{?
int?weightK;?
int?parentlchildrchild;?
}HTNode*?HuffmanTree;?

typedef?char?**HuffmanCode;?

//-----------全局變量-----------------------?
HuffmanTree?HT;?
HuffmanCode?HC;?
int?w[50]ijn;?
char?z[50];?
int?flag=0;?
int?numb=0;?

//?-----------------求赫夫曼編碼-----------------------?
struct?cou{?
char?data;?
int?count;?
}cou[50];?

int?min(HuffmanTree?tint?i)?
{?//?函數void?select()調用?
int?jflag;?
int?k=UINT_MAX;?//?取k為不小于可能的值即k為最大的權值1000?
for(j=1;j<=i;j++)?
if(t[j].weightk=t[j].weightflag=j;?
t[flag].parent=1;?
return?flag;?
}?

//--------------------slect函數----------------------?
void?select(HuffmanTree?tint?iint?&s1int?&s2)?
{?//?s1為最小的兩個值中序號小的那個?
int?j;?
s1=min(ti);?
s2=min(ti);?
if(s1>s2)?
{?
j=s1;?
s1=s2;?
s2=j;?
}?
}?
void?HuffmanCoding(HuffmanTree?&HTHuffmanCode?&HCint?*wint?n)?
{?//?w存放n個字符的權值(均>0)構造赫夫曼樹HT并求出n個字符的赫夫曼編碼HC?
int?mis1s2start;?
//unsigned?cf;?
int?cf;?
HuffmanTree?p;?
char?*cd;?
if(n<=1)?
return;//檢測結點數是否可以構成樹?
m=2*n-1;?
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));?//?0號單元未用?
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->parent=0;?
for(i=n+1;i<=m;++i)?//?建赫夫曼樹?
{?//?在HT[1~i-1]中選擇parent為0且weight最小的兩個結點其序號分別為s1和s2?
select(HTi-1s1s2);?
HT[s1].parent=HT[s2].parent=i;?
HT[i].lchild=s1;?
HT[i].rchild=s2;?
HT[i].weight=HT[s1].weight+HT[s2].weight;?
}?
//?從葉子到根逆向求每個字符的赫夫曼編碼?
HC=(HuffmanCode)malloc((n+1)*sizeof(char*));?
//?分配n個字符編碼的頭指針向量([0]不用)?
cd=(char*)malloc(n*sizeof(char));?//?分配求編碼的工作空間?
cd[n-1]=‘\0‘;?//?編碼結束符?
for(i=1;i<=n;i++)?
{?//?逐個字符求赫夫曼編碼?
start=n-1;?//?編碼結束符位置?
for(c=if=HT[i].parent;f!=0;c=ff=HT[f].parent)?
//?從葉子到根逆向求編碼?
if(HT[f].lchild==c)?
cd[--start]=‘0‘;?
else?
cd[--start]=‘1‘;?
HC[i]=(char*)malloc((n-start)*sizeof(char));?
//?為第i個字符編碼分配空間?
strcpy(HC[i]&cd[start]);?//?從cd復制編碼(串)到HC?
}?
free(cd);?//?釋放工作空間?
}?
//---------------------獲取報文并寫入文件---------------------------------?
int?InputCode()?
{?
//printf(“請輸入你想要編碼的字符“);?
FILE?*tobetran;?

if((tobetran=fopen(“tobetran.txt““w“))==NULL)?
{?
printf(“不能打開文件“);?
return?0;?
}?
printf(“請輸入你想要編碼的字符“);?
scanf(“%s“str);
fputs(strtobetran);?
printf(“獲取報文成功“);?
fclose(tobetran);?
return?strlen(str);?
}?



//--------------初始化赫夫曼鏈表---------------------------------?
void?Initialization()?
{?int?akflaglen;?
a=0;?
len=InputCode();?
for(i=0;i{k=0;flag=1;?
cou[i-a].data=str[i];?
cou[i-a].count=1;?
while(i>k)?
{?
if(str[i]==str[k])?
{?
a++;?
flag=0;?
}?
k++;?
if(flag==0)?
break;?

}?

if(flag)?
{?
for(j=i+1;j{if(str[i]==str[j])?
++cou[i-a].count;}?
}?

}?
n=len-a;?
for(i=0;i{?printf(“%c的出

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????8718??2009-01-07?11:08??huffman\huffman.cpp

?????文件?????198656??2009-01-07?18:00??huffman\圖畫\1?main.edd

?????文件?????171008??2009-01-07?18:02??huffman\圖畫\1i.edd

?????文件??????16005??2009-01-07?18:02??huffman\圖畫\1i.jpg

?????文件??????19905??2009-01-07?18:00??huffman\圖畫\1main.jpg

?????文件?????174592??2009-01-07?18:03??huffman\圖畫\2e.edd

?????文件??????17931??2009-01-07?18:04??huffman\圖畫\2e.jpg

?????文件?????174592??2009-01-07?18:10??huffman\圖畫\3d.edd

?????文件??????19309??2009-01-07?18:10??huffman\圖畫\3d.jpg

?????文件?????169472??2009-01-07?18:12??huffman\圖畫\4p.edd

?????文件??????18064??2009-01-07?18:12??huffman\圖畫\4p.jpg

?????文件?????173568??2009-01-07?18:13??huffman\圖畫\5t.edd

?????文件??????17193??2009-01-07?18:13??huffman\圖畫\5t.jpg

?????文件?????173568??2009-01-07?18:14??huffman\圖畫\6y.edd

?????文件??????17367??2009-01-07?18:14??huffman\圖畫\6y.jpg

?????目錄??????????0??2009-03-01?23:17??huffman\圖畫

?????目錄??????????0??2009-04-22?16:34??huffman

-----------?---------??----------?-----??----

??????????????1369948????????????????????17


評論

共有 條評論