📄 huffmantree_main.cpp
字号:
//程序名:HuffmanTree_Main.cpp
//程序功能:定义控制台应用程序的入口点
//程序作者:伍世浩 20072102310
//日期:2008.12.11
//文件信息:
// Huffman.h 哈夫曼树的定义文件
// HuffmanTree.h 哈夫曼树的实现文件
// HuffmanTree_Main.cpp 主函数
#include"HuffmanTree.h"
void main()
{
HuffmanTree mytree;
int i=0,j=0;
int choise;
int finished=1;
while( finished )
{
ifstream output_code;//输出文件流
ofstream io_delete;//清空文件流
cout<<"---------菜单----------"<<endl;
cout<<"1,读取默认Huffman树"<<endl;
cout<<"2,手动创建哈夫曼树"<<endl;
cout<<"3,自动创建哈夫曼树"<<endl;
cout<<"4,保存当前哈夫曼树"<<endl;
cout<<"5,读取当前哈夫曼树"<<endl;
cout<<"6,用当前树编码"<<endl;
cout<<"7,用当前树译码"<<endl;
cout<<"8,凹入表示法显示哈夫曼树"<<endl;
cout<<"0,退出"<<endl;
cin>>choise;
if( (choise<0)||(choise>8) )
{
cout<<"请输入恰当的整数!\n";
continue;
}
switch( choise )
{
case 1://读取默认Huffman树
mytree.ReadDefault( );
mytree.Build( );
cout<<"读取信息成功"<<endl;
break;
case 2://手动创建哈夫曼树
cout<<"请输入要创建的哈夫曼树的根字符数(大于0的整数):\n";
int num;
cin>>num;
mytree.Create( num );
cout<<"编码成功\n";
break;
case 3://自动创建哈夫曼树
mytree.Auto_Creat( );
break;
case 4://保存当前哈夫曼树
mytree.WriteFile( );
break;
case 5://读取当前哈夫曼树
mytree.ReadFile( );
break;
case 6://用当前树编码
//首先清除原文件的内容
char *data_code[ Max ];//用来保存哈夫曼编码
io_delete.open( "code.txt" );
if( !io_delete)
{
cout<<"不能打开code文件!";
}
io_delete.close();
char data_in[ Max ];//用来保存要传输的字符串
char temp;
cout<<"请输入要编码的字符(输入#号符结束):";
cin.get();
cin>>temp;
i=0;
while( temp!='#')
{
if( temp==' ')
temp='*';
if( temp=='\n')
temp='$';
data_in[i]=temp;
i++;
temp=cin.get();
}
int j;
for( j=0; j<i; j++ )
{
data_code[j]=mytree.Encoder( data_in[j] );//对每个字符调用编码函数,结果保存在data_code中
}
cout<<"\n编码成功,得到的哈夫曼码为:"<<endl;
for( j=0; j<i; j++ )
{
cout<<data_code[j];
}
cout<<endl;
break;
case 7://用当前树译码
char BiStr[ Max ];
output_code.open("code.txt");
if( !output_code)
{
cout<<"不能打开code文件!";
}
i=0;
while( !output_code.eof() )//直到文件读取结束
{
output_code>>BiStr[i];
i++;
}
BiStr[i]='\0';
cout<<"经译码,原文字信息为:\n";
mytree.Decoder( BiStr );
output_code.close();
cout<<endl;
break;
case 8://凹入表示法显示哈夫曼树
int T;
T= 2*mytree.Get_LeafNum()-2;
mytree.Print( T,1 );
break;
case 0:
cout<<"感谢您的使用!\n";
finished=0;
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -