www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

/*
*哈夫曼編碼-鏈?zhǔn)浇Y(jié)構(gòu)
* 
*功能實現(xiàn): 
*	源文件字符權(quá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);

//讀取源文件,確認各字符權(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 = '