//把字符编码数据存储到文件中
134
if(!(fp=fopen(CodeFileName,\
{ printf(\ getch(); return; }
fwrite(&n,sizeof(int),1,fp);
fwrite(code,sizeof(struct HuffmanCoding),n,fp); fclose(fp); free_ht();
printf(\ getch();
}
/************************************************************/
/* 哈夫曼编码的函数 */
/************************************************************/
void Encode(void) {
int i,j,n;
char Encodestr[256];
struct HuffmanCoding code[NODENUM]; FILE *fp1, *fp2;
/********************************************************/
/* 字符编码 */
/* 1、读字符编码数据 */
/* 2、读需编码的字符串 */
/* 3、存储被编码的字符串数据到文件中 */
/* 4、打开存储编码的数据文件 */
/* 5、字符编码
*/
/* 方法:依次从被编码的字符串中取一个字符,然后 */ /* 字符编码表中查找对应字符,若找到,则把对应 */
/* 的编码输出到编码数据文件中。 */
/********************************************************/
字符编码的代码 (由学生独立完成)
}
/************************************************************/
/* 哈夫曼译码的函数 */
/************************************************************/
void Decode() {
FILE *CFP, *TFP;
135
char DeCodeStr[256]; char ch; int f,m;
/********************************************************/
/* 字符译码 */
/* 1、读哈夫曼树数据 */
/* 2、打开编码数据文件 */
/* 3、打开存储译码的数据文件 */
/* 4、字符译码 */
/* 方法:依次从编码数据文件中读取编码字符,并从 /* 哈夫曼树开始,若是数字字符“0”,则沿其左分 /* 支下降到孩子结点;若是数字字符“1”,则沿其 /* 右分支下降到孩子结点;如此反复,直到页结点, /* 则输出页结点对应的字符到译码数据文件中,并 /* 显式。每当译出一个字符,又从页结点开始,如 /* 此重复若找到,直到读完编码数据文件中所有字符。 /********************************************************/
字符译码的代码
(由学生独立完成)
free_ht(); fclose(CFP); fclose(TFP); printf(\ getch(); }
/************************************************************/
/* 以凹式形式打印哈夫曼树的函数 */
/************************************************************/
void PrintHuffmanTree() { int i,node,child,level,m,top; struct stacknode stack[80]; m=ReadFromFile(); printf(\ Huffman TRee in Level\\n\ printf(\
凹式打印的代码 (由学生独立完成)
*/ */ */ */ */ */ */
}