📄 huffmanprocess.h
字号:
#include <iostream>
using namespace std;
void HuffmanP(float queue1[], float queue2[][25], int numforexist)
{
int front1 = 0;
int front2 = 0;
int end2 = 0;
int numforuse = 0; //the number of value can be used in queue2
for(int i=0; i<numforexist-1; i++, numforuse++, end2++)
{
if(numforuse == 0)
{
queue2[1][end2] = queue1[front1] + queue1[front1+1];
queue2[0][end2] = front1 + 1;
queue2[2][end2] = front1 + 2;
front1 = front1 + 2;
}
else if(numforuse == 1)
{
if(queue2[1][front2]>=queue1[front1] && queue2[1][front2]>=queue1[front1+1] && front1<numforexist-1)
{
queue2[1][end2] = queue1[front1] + queue1[front1+1];
queue2[0][end2] = front1 + 1;
queue2[2][end2] = front1 + 2;
front1 = front1 + 2;
}
else
{
queue2[1][end2] = queue1[front1] + queue2[1][front2];
queue2[0][end2] = front1+1;
queue2[2][end2] = 0 - front2-1;
front1 = front1 + 1;
front2 = front2 + 1;
numforuse--;
}
}
else
{
if(queue2[1][front2]>=queue1[front1] && queue2[1][front2]>=queue1[front1+1] && front1<numforexist-1)
{
queue2[1][end2] = queue1[front1] + queue1[front1+1];
queue2[0][end2] = front1 + 1;
queue2[2][end2] = front1 + 2;
front1 = front1 + 2;
}
else if(queue2[1][front2]<queue1[front1] && queue2[1][front2+1]<queue1[front1] || front1 == numforexist-1 || front1 == numforexist)
{
queue2[1][end2] = queue2[1][front2] + queue2[1][front2+1];
queue2[0][end2] = 0 - front2 - 1;
queue2[2][end2] = 0 - front2 - 2;
front2 = front2 + 2;
numforuse = numforuse - 2;
}
else
{
queue2[1][end2] = queue1[front1] + queue2[1][front2];
queue2[0][end2] = front1 + 1;
queue2[2][end2] = 0 - front2 - 1;
front1 = front1 + 1;
front2 = front2 + 1;
numforuse--;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -