huffmancoding.cpp

来自「一个关于赫夫曼编码与译码的展示程序」· C++ 代码 · 共 23 行

CPP
23
字号
#include"Huffmanhead.h"
extern char HC[MAX][MAX],ShuruName[MAX];
void HuffmanCoding(HuffmanTree HT[],char CodeTemp[],int n)//从叶子到根节点逆向求每个字符的赫夫曼编码
{
	int start,i,c,f;
	CodeTemp[n]='\0';//编码结束符
	printf("Huffman Codes are:\n\n");
	printf("  \tShuruName\t\tweight\t\t  code\n");
	printf("****************************************************************\n");
	for(i=1;i<=n;i++)
	{
		start=n;
		for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)//对第i个字符由叶子节点寻找到根结点进行编码
		{
			if(HT[f].lchild==c)
				CodeTemp[--start]='0';
			else 
				CodeTemp[--start]='1';
		}
		strcpy(HC[i],&CodeTemp[start]);//把第i个字符的编码存放在HC[i]中
		printf("  \t    %c    \t\t  %d   \t\t   %s\n",ShuruName[i],HT[i].weight,HC[i]);
	}
}    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?