⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decoding.cpp

📁 用C++编写的哈弗曼树的源代码,方便C语言及C++初学者学习交流
💻 CPP
字号:
#include"head.h"
void Decoding(Huffmantree HT,int *i)
{//利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。
	char c;
	int a=0,b=*i;
	FILE *CodeFile,*TextFile;
	CodeFile=fopen("CodeFile","r");
	TextFile=fopen("TextFile","w+");
	printf("\n");
	while(!feof(CodeFile))
	{//从CodeFile获取字符,判断其编码是0或者1
		c=fgetc(CodeFile);
		if(c=='0')
		{//如果其编码为0,则找结点的左孩子
			a=HT[b].lchild;
			if(HT[a].lchild==0)
			{//如果该节点没有孩子,输出对应结点代表的字符,并返回到根节点
				printf("%c",HT[a].c);
				fprintf(TextFile,"%c",HT[a].c);
				b=*i;
				continue;
			}
		}
		if(c=='1')
		{//如果其编码为1,则找结点的右孩子
			a=HT[b].rchild;
			if(HT[a].lchild==0)
			{//如果此节点没有孩子,输出对应结点代表的字符,并返回到根节点
				printf("%c",HT[a].c);
				fprintf(TextFile,"%c",HT[a].c);
				b=*i;
				continue;
			}
		}
			b=a;//找其孩子结点
	}
	fclose(CodeFile);
	fclose(TextFile);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -