huffmanprocess.h

来自「实现了对文本文件的huffman编码与解码过程」· C头文件 代码 · 共 71 行

H
71
字号
#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 + =
减小字号Ctrl + -
显示快捷键?