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 + -
显示快捷键?