?? haffmancode.cpp
字號:
#include<stdio.h> /*該文件包含prinf()等函數(shù)*/
#include<stdlib.h> /*該文件包含exit()等函數(shù)*/
#define MaxValue 10000 /*設定的權(quán)值最大值*/
#define MaxN 100 /*設定的最大結(jié)點個數(shù)*/
#include"Haffman.h" /*包含文件Haffman.h*/
void main(void)
{
int i,j,n; /*待編碼的字符數(shù)n*/
printf("***************************\n 哈夫曼編碼\n***************************\n\n請輸入將要編碼的字符個數(shù):");
scanf("%d",&n);
int weight[100]; /*預留100個字符的權(quán)值的存放空間*/
for(i=0;i<n;i++) /*依次輸入將要編碼的字符的權(quán)值*/
{
printf("第%d個權(quán)值:",i+1);
scanf("%d",&weight[i]);
}
HaffNode * myHaffTree=(HaffNode *)malloc(sizeof(HaffNode)*(2*n+1));/*為哈夫曼樹申請內(nèi)存*/
Code * myHaffCode=(Code *)malloc(sizeof(Code)*n); /*為哈夫曼編碼申請內(nèi)存*/
if(n>MaxN)
{
printf("給出的n越界,修改MaxN!\n");
exit(1);
}
Haffman(weight,n,myHaffTree); /*構(gòu)造哈夫曼樹*/
HaffmanCode(myHaffTree,n,myHaffCode); /*哈夫曼編碼*/
/*輸出每個葉結(jié)點的哈夫曼編碼*/
for(i=0;i<n;i++)
{
printf("Weight=%d Code= ",myHaffCode[i].weight); /*輸出哈夫曼編碼*/
for(j=myHaffCode[i].start+1;j<n;j++)
printf("%d",myHaffCode[i].bit[j]);
printf("\n");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -