Êý¾Ý½á¹¹ÊµÑéÈý¹þ·òÂüÊ÷ʵÑ鱨¸æ

ʵÑ鱨¸æ3£º¹þ·òÂü±à/ÒëÂëÆ÷

ÌâÄ¿£º¹þ·òÂü±à/ÒëÂëÆ÷

Ò»¡¢ÌâĿҪÇó£º

дһ¸ö¹þ·òÂüÂëµÄ±à/ÒëÂëϵͳ£¬ÒªÇóÄܶÔÒª´«ÊäµÄ±¨ÎĽøÐбàÂëºÍ½âÂë¡£¹¹Ôì¹þ·òÂüÊ÷ʱ£¬È¨ÖµÐ¡µÄ·Å×ó×ÓÊ÷£¬È¨Öµ´óµÄ·ÅÓÒ×ÓÊ÷£¬±àÂëʱÓÒ×ÓÊ÷±àÂëΪ1£¬×ó×ÓÊ÷±àÂëΪ0.

¶þ¡¢¸ÅÒªÉè¼Æ£º

Êý¾Ý½á¹¹£º

typedef struct {

int bit[MAXBIT]; int start;

} HCodeType; /* ±àÂë½á¹¹Ìå */

typedef struct {

int weight; int parent; int lchild; int rchild; char value;

} HNode; /* ½áµã½á¹¹Ìå */

º¯Êý£º

void DEMONHuffmanTree (HNode HuffNode[MAXNODE], int n)

×÷Ó㺹¹ÔìÒ»¸ö¹þ·òÂüÊ÷£¬²¢Ñ­»·¹¹½¨ int main ()

×÷ÓãºÔËÓÃÒѾ­¹¹½¨ºÃµÄ¹þ¸¥ÂüÊ÷£¬½øÐнڵãµÄ´¦Àí£¬´ïµ½³É¹¦½âÂë±àÒë Èý¡¢ÏêϸÉè¼Æ£º ¹þ·òÂüÊ÷µÄ½¨Á¢£º

void DEMONHuffmanTree (HNode HuffNode[MAXNODE], int n) {

int i = 0, j, m1, m2, x1, x2; char x;

/* ³õʼ»¯´æ·Å¹þ·òÂüÊ÷Êý×é HuffNode[] ÖеĽáµã */ while (i

HuffNode[i].weight = 0;//Ȩֵ

1

ʵÑ鱨¸æ3£º¹þ·òÂü±à/ÒëÂëÆ÷

HuffNode[i].parent =-1; HuffNode[i].lchild =-1; HuffNode[i].rchild =-1; scanf(\

scanf(\ʵ¼ÊÖµ£¬¿É¸ù¾ÝÇé¿öÌæ»»Îª×Öĸ i++; }

/* ÊäÈë n ¸öÒ¶×Ó½áµãµÄȨֵ */ scanf(\ for(i=0;i

scanf (\ }

for (i=n; i<2*n-1; i++) {

HuffNode[i].weight = 0;//Ȩֵ HuffNode[i].parent =-1; HuffNode[i].lchild =-1; HuffNode[i].rchild =-1; HuffNode[i].value=i; }

/* Ñ­»·¹¹Ôì Huffman Ê÷ */ for (i=0; i

m1=m2=MAXQZ; // m1¡¢m2Öдæ·ÅÁ½¸öÎÞ¸¸½áµãÇÒ½áµãȨֵ×îСµÄÁ½¸ö½áµã x1=x2=0;//ÕÒ³öËùÓнáµãÖÐȨֵ×îС¡¢ÎÞ¸¸½áµãµÄÁ½¸ö½áµã£¬²¢ºÏ²¢Ö®ÎªÒ»¿Å¶þ²æÊ÷ for (j=0; j

if (HuffNode[j].weight < m1 && HuffNode[j].parent==-1) {

m2=m1;//m1ÖÐÊÇ×îС x2=x1;

m1=HuffNode[j].weight; x1=j; }

else if (HuffNode[j].weight < m2 && HuffNode[j].parent==-1) {

m2=HuffNode[j].weight; x2=j; }

2

ʵÑ鱨¸æ3£º¹þ·òÂü±à/ÒëÂëÆ÷ } /* end for */

/* ÉèÖÃÕÒµ½µÄÁ½¸ö×Ó½áµã x1¡¢x2 µÄ¸¸½áµãÐÅÏ¢ */ HuffNode[x1].parent = n+i; HuffNode[x2].parent = n+i;

HuffNode[n+i].weight = HuffNode[x1].weight + HuffNode[x2].weight; HuffNode[n+i].lchild = x1; HuffNode[n+i].rchild = x2;

} }

Ò¶×Ó½ÚµãµÄ¹þ·òÂü±àÂëµÄ±£´æ£º for (j=cd.start+1; j

HuffCode[i].bit[j] = cd.bit[j]; HuffCode[i].start = cd.start;

Ö÷º¯Êýչʾ£º int main() {

HNode HuffNode[MAXNODE]; HCodeType HuffCode[MAXLEAF],cd; int i, j, c, p, n,k=0; char wen[100]; char z;

scanf (\

HuffmanTree (HuffNode, n);

for (i=0; i < n; i++) {

cd.start = n-1; c = i;

p = HuffNode[c].parent;

while (p != -1) /* ¸¸½áµã´æÔÚ */ {

if (HuffNode[p].lchild == c) cd.bit[cd.start] = 0; else

cd.bit[cd.start] = 1;

cd.start--; /* Çó±àÂëµÄµÍһλ */ c=p;

p=HuffNode[c].parent; /* ÉèÖÃÏÂһѭ»·Ìõ¼þ */ } /* end while */

3

ʵÑ鱨¸æ3£º¹þ·òÂü±à/ÒëÂëÆ÷

for (j=cd.start+1; j

z=getchar(); z=getchar();

for(;z!='\\n';z=getchar()) { wen[k++]=z; for(i=0;i

ËÄ¡¢µ÷ÊÔ·ÖÎöÓëÐĵÃÌå»á£º

ËäÈ»¹þ·òÂüÊ÷µÄ½¨Á¢ÓÐÊéÉϵIJο¼£¬µ«ÊÇʵ¼ÊдÕû¸ö´úÂëµÄʱºò»¹ÊÇÎÊÌâÖØÖØ¡£Ê×ÏȾÍÊǹþ¸¥ÂüÊ÷Íü¼ÇÁ˳õʼµÄ¸³Öµ£¬µ¼ÖÂ×îºó³öÏÖÁËÎÊÌâ¡£ÕâÑùµÄ´íÎó»¹ÊǺÜÈÝÒ×½â¾ö£¬µ«ÊÇÖ®ºó¾Í³öÏÖÁËWAµÄÇé¿ö¡£ÔÚͬѧµÄ°ïÖúÏ£¬×îºó·¢ÏÖÊÇÒòΪÔÚѡȡ½ÚµãµÄʱºò£¬Ñ­»·³öÏÖÁËÎÊÌ⣬ËäÈ»¿´ÆðÀ´±àÒëûÓÐ´í£¬µ«ÊDZßÔµÇé¿ö¾Í»á³öÏÖÊý¾Ý´íÎó£¬Õâ¸ö»¹ÊǺÜÁîÈ˾¯ÐÑ£¬¶øÕâÖÖ˼¿¼µÄ²»È«ÃæµÄÎÊÌ⣬ÔÚdebugµÄ¹ý³ÌÖлáºÄÈ¥´óÁ¿µÄʱ¼ä£¬ÕâÊÇҪעÒâµÄ¡£ Îå¡¢Óû§²Ù×÷˵Ã÷£º

ÊäÈë±íʾ×Ö·û¼¯´óСΪn£¨n <= 100£©µÄÕýÕûÊý£¬ÒÔ¼°n¸ö×Ö·ûºÍn¸öȨֵ£¨ÕýÕûÊý£¬Öµ

Ô½´ó±íʾ¸Ã×Ö·û³öÏֵĸÅÂÊÔ½´ó£©£» ÊäÈë´®³¤Ð¡ÓÚ»òµÈÓÚ100µÄÄ¿±ê±¨ÎÄ¡£

4

ʵÑ鱨¸æ3£º¹þ·òÂü±à/ÒëÂëÆ÷

Áù¡¢ÔËÐнá¹û£º

¸½´ø×Ô¼ºµÄËã·¨Íê³ÉµÄ½á¹ûͼ£¬¿ÉÒÔͨ¹ýPrt ScºÍͼƬ±à¼­Æ÷»ñµÃ£»

5

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4