⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffman.cpp

📁 这是一个霍夫曼编码解码的源程序,可以用它高效实现霍夫曼解码编码,注释详细,可读性好.压缩包止包括源程序文件,再vc中运行.
💻 CPP
字号:
#include<string.h>
#include"coding_decode.h"
const charSize=1000;
void main()
{
	char c[30];
	cout<<"请输入编码报文中可能出现的字符,以对其生成编码(出现频率最高的在前面)"<<endl;
    //cout<<"请输入编码报文中可能出现的字符以及该字符出现频率权值,以对其生成编码"<<endl;
	gets(c);
	int L=strlen(c);
	code *cipher=new code[L];
	for(int i=0;i<L;i++)
	{
		cipher[i].key=L-i-1;
		cipher[i].keymark=c[i];
	}
    binTree *NewTree=HuffmanTree(cipher,L);
	huffcode *hf=coding(NewTree,L);	
	cout<<"编码字符"<<'\t'<<"对应编码"<<endl;
	for(i=0;i<L;i++)
	{
		cout<<"    "<<hf[i].keyc<<'\t'<<'\t'<<hf[i].hufc<<endl;
	}
	int r;
	cout<<endl<<"对报文Huffman编码,请输入'1'"<<endl
		<<"对报文Huffman解码,输入'2'"<<endl<<"退出,输入'0':";
	cin>>r;
	while(r)
	{
		if(r==1)
		{
	        cout<<"请输入要编码的报文内容:"<<endl;
	        char ch[charSize];
           	gets(ch);
	        int mark=0;
			cout<<"该报文的编码是:";
	        for(i=0;i<strlen(ch);i++)
			{
		        for(int j=0;j<L;j++)
				{
		          	if(ch[i]==hf[j].keyc) 
					{
			        	cout<<hf[j].hufc;
			         	mark=1;
					}
				}
		    if(mark==0) cout<<"你输入的报文内容中有非编码的字符!";
			}
		}
	   if(r==2)
	   {
	      cout<<"请输入要解码的报文:"<<endl;
	      char chr[charSize];
	      gets(chr);
		  cout<<"该报文经解码后是:";
	      decode(NewTree,chr);
	   }
      cout<<endl<<"对报文进行Huffman编码,请输入'1'"<<endl
		  <<"对报文进行Huffman解码,输入'2'"<<endl<<"退出,输入'0':";
	   cin>>r;
	}
}

⌨️ 快捷键说明

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