intmain.cpp
来自「这里实现了一个比较系统的哈夫曼编码系统。具有如下功能。 1:输入字符」· C++ 代码 · 共 80 行
CPP
80 行
#include"HuffTree.h"
void DataEnter(char*&ch,int*&w,int &n)
{
int i;
ch=new char[n];
w=new int[n];
for(i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"字符:";
cin>>ch[i];
cout<<"输入第"<<i+1<<"字符的权值:";
cin>>w[i];
}
}
void Print(char*ch,HuffmanCode HC,int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<ch[i]<<":";
cout<<HC[i+1]<<endl;
}
}
int main()
{
char choice,*ch,ch1[50];
int *w,n;
HTNode* HT;
HuffmanCode HC;
while(1)
{
cout<<setfill('*')<<setw(20)<<"主菜单"<<setw(20)<<'*'<<endl;
cout<<"1:输入字符,及权值等相关信息。"<<endl;
cout<<"2:建立哈夫曼树求出字符编码。"<<endl;
cout<<"3:显示所有字符的哈夫曼编码。"<<endl;
cout<<"4:显示一段字符串的哈夫曼码。"<<endl;
cout<<"0:结束程序。"<<endl;
cout<<setw(50)<<'*'<<endl;
cin>>choice;
while(choice<'0'||choice>'4')
{
cout<<"输入错误,请重新输入:";
cin>>choice;
}
switch(choice)
{
case '1':
cout<<"输入结点数:";
cin>>n;
DataEnter(ch,w,n);break;
case '2':
if(n==1)cout<<"编码成功。"<<endl;
else
{
HuffmanCoding(HT,HC,w,n);
cout<<"求哈夫曼编码成功。"<<endl;
}
break;
case '3':
cout<<"各字符的哈夫曼编码如下:"<<endl;
if(n==1)cout<<ch[0]<<":"<<0<<endl;
else
Print(ch,HC,n);
break;
case '4':
cout<<"请输入字符串:";
cin>>ch1;
cout<<"编码结果:";
Trans(HC,ch,n,ch1);
break;
case '0':return 0;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?