日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]/* *哈夫曼編碼-鏈?zhǔn)浇Y(jié)構(gòu) * *功能實現(xiàn): * 源文件字符權(quán)值確認(rèn)操作 * 哈夫曼樹的建立操作 * 字符字典的建立操作 * 源文件轉(zhuǎn)碼操作操作 * 二進制文件譯碼操作 * 文件輸出操作

/*
*哈夫曼編碼-鏈?zhǔn)浇Y(jié)構(gòu)
* 
*功能實現(xiàn): 
*	源文件字符權(quán)值確認(rèn)操作 
*	哈夫曼樹的建立操作 
*	字符字典的建立操作 
*	源文件轉(zhuǎn)碼操作操作 
*	二進制文件譯碼操作
*	文件輸出操作
*	內(nèi)存清理操作 
*/

#include 
#include 
#define _HFMAlgorithm_
#define codesize 30

//哈夫曼樹結(jié)點定義 
typedef struct forest{
	struct forest *left;
	struct forest *right;
	struct forest *parent;
	unsigned int weight;
	char word;
}HFMNode;

//字符字典結(jié)點定義 
typedef struct hfmtable{
	char word;
	char code[codesize];
	int start;//標(biāo)記起始位置 
	struct hfmtable *next;
}Table;

//函數(shù)聲明
HFMNode * ReadFile(void);
HFMNode * CreateHFMTree(HFMNode *F);
void HFMCode(HFMNode * root,Table * &table);
void PrintHFMTree(HFMNode *root);
void PrintTable(Table *t);
void TransCoding(Table * table);
void ReTransCoding(HFMNode * root);
void SelectFile(void);
void PrintFileInformation(char FileName[]);
void DestroyHFMTree(HFMNode *root);
void DestroyTable(Table *table);

//讀取源文件,確認(rèn)各字符權(quán)值建立森林 
HFMNode * ReadFile(void)
{
	HFMNode *head,*p;
	FILE *fp = NULL;
	char a;
	
	//創(chuàng)建表頭結(jié)點 
	head = (HFMNode *)malloc(sizeof(HFMNode));
	head->left = head->right = head->parent = NULL;
	head->word = '