📄 main.cpp
字号:
//======================================================================
// main.cpp
//======================================================================
#include "Huffman.h"
#include <iostream.h>
#include <string.h>
int Defaultlen = 26;
class LettFreq
{
private:
char letter;
int freq;
public:
LettFreq( int f , char l='\0')
{
freq = f ;
letter = l;
}
int weight()
{
return freq;
}
char getLett()
{
return letter;
}
void addFreq()
{
freq++;
}
int operator = (LettFreq lett)
{
return lett.freq;
}
};
void main ()
{
LettFreq ** letter;
letter = new LettFreq * [Defaultlen];
for( int i = 0 ; i < Defaultlen ; i++ )
{
letter[i] = new LettFreq(0,i+97);
}
char * letters;
letters = new char[1000];
cin >> letters;
for( i = 0 ; i < strlen(letters) ; i++ )
{
letter[(int)letters[i] - 97]->addFreq();
}
list< HuffmanTree<LettFreq> > HuffmanList;
HuffmanTree<LettFreq> ** Huffman;
Huffman = new HuffmanTree<LettFreq> * [Defaultlen];
for( i = 0 ; i < Defaultlen ; i++)
{
Huffman[i] = new HuffmanTree<LettFreq> ( letter[i] );
int position = HuffmanList.ser_position(*Huffman[i]);
cout << HuffmanList.insert(position,*Huffman[i]) << endl;
}
HuffmanTree<LettFreq> *templeft , *tempright , *temproot;
while( HuffmanList.size() >= 2 )
{
cout << HuffmanList.remove(templeft) << endl;
cout << HuffmanList.remove(tempright) << endl;
temproot = new HuffmanTree<LettFreq> (templeft,tempright);
int position = HuffmanList.ser_position(*temproot);
cout << HuffmanList.insert(position,*temproot) << endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -