亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? huffman.cpp

?? huffman編碼程序
?? CPP
字號:
//**************************huffman.cpp**********************#include <iostream>#include <fstream> //for ofstream ifstream#include <limits>  //for numeric_limits<double>::max()#include <cstdlib> //for exit()#include <cstring> //for strlen(), strcpy(), strcmp()#include "huffman.h"using namespace std;void HuffmanTree::insert(const char &data, const double &wt) { //插入結點	if (2*currentSize-1 >= maxSize) //葉子結點為n的哈夫曼樹共有2n-1個結點		return;	arrayTree[currentSize].info=data;	arrayTree[currentSize].weight=wt;	currentSize++;}void HuffmanTree::reverse(char arr[]) { //反轉字符串	const int len=strlen(arr);	char *p;	p=new char[len+1];	strcpy(p, arr);	p[len]='\0';	int k=0;	for (int i=len-1; i>=0; i--) 		arr[i]=p[k++];	arr[len]='\0';	delete[] p;}int HuffmanTree::findPosition(const char &ch) const { //返回字符ch在arrayTree[]中的位置	for (int i=0; i<currentSize; i++)		if (arrayTree[i].info == ch)			return i;	return -1;}int HuffmanTree::getLongestCodeLength() const { //返回編碼數組codeArray[]長度最長的編碼的位置	if (currentSize == 0)		return -1;	int len=strlen(codeArray[0].ptr);	int i=1;	while (i < currentSize) {		int tmp=strlen(codeArray[i].ptr);		if (tmp > len)			len=tmp;		i++;	}	return len;}int HuffmanTree::isEqual(const char *s) const { //判斷s的編碼是否存在,若存在返回編碼在數組codeArray[]中的位置,否則返回-1	for (int i=0; i<currentSize; i++) 		if (strlen(s) == strlen(codeArray[i].ptr)) //可以去掉此行			if (strcmp(s, codeArray[i].ptr) == 0)				return i;	return -1;}	void HuffmanTree::print() { //打印編碼	int k=0;	while (k < currentSize) {		cout<<arrayTree[k].info<<'('<<arrayTree[k].weight<<"): "<<codeArray[k].ptr<<endl;		k++;	}}void HuffmanTree::createHuffmanTree() { //構造huffmanTree	int i=currentSize;	int k;	double wt1, wt2;	int lnode, rnode;	while (i < 2*currentSize-1) {		wt1=wt2=numeric_limits<double>::max();		k=0;		while (k < i) {			if (arrayTree[k].parent==-1) {				if (arrayTree[k].weight<wt1) {					wt2=wt1;					rnode=lnode;					wt1=arrayTree[k].weight;					lnode=k;				}				else if (arrayTree[k].weight<wt2) {					wt2=arrayTree[k].weight;					rnode=k;				} 			}			k++;		}		arrayTree[i].weight = arrayTree[lnode].weight+arrayTree[rnode].weight;		arrayTree[i].lchild=lnode;		arrayTree[i].rchild=rnode;		arrayTree[lnode].parent=arrayTree[rnode].parent=i;		i++;	}}			void HuffmanTree::createHuffmanCode() { //構造huffmanCode,即哈夫曼編碼	codeArray=new Code[currentSize];	int i=0;	int k, n, m;	while (i < currentSize) {		k = arrayTree[i].parent;		n=0;		m=i;		while (k!=-1 && k<currentSize*2-1) {			if (arrayTree[k].lchild==m) 				codeArray[i].ptr[n++]='0';			else if (arrayTree[k].rchild==m) 				codeArray[i].ptr[n++]='1';			m=k;			k=arrayTree[m].parent;		}		codeArray[i].ptr[n]='\0';		reverse(codeArray[i].ptr); //反轉字符串,使之變成正確的編碼		i++;	}}void HuffmanTree::run(const char *inFilename, const char *outFilename, const char *secondOutName) { //run函數的實現	//打開inFilename提供輸入	ifstream fileIn(inFilename, ios::in);	if (!fileIn) {		cerr<<"\""<<inFilename<<"\" could not open."<<endl;		exit(1);	}	char ch;	int pos;	//從文件中讀入字符,并統計各個字符個數	fileIn>>ch;	while (fileIn && !fileIn.eof()) {		pos = findPosition(ch);		if (pos != -1)			arrayTree[pos].weight++;		else 			insert(ch, 1);		fileIn>>ch;	}	createHuffmanTree(); //構造huffman樹	createHuffmanCode(); //對統計字符進行編碼	//打開outFilename提供輸出	ofstream fileOut(outFilename, ios::out);	if (!fileOut) {		cerr<<"\""<<outFilename<<"\" could not open."<<endl;		exit(1);	}	fileIn.clear(); //刷新輸入流, 注:ofstream沒有flush()方法,而ifstream則有flush()方法	fileIn.seekg(0, ios::beg);	//把從inFilename文件中的字符進行編碼,并寫入outFilename文件	fileIn>>ch;	while (fileIn && !fileIn.eof()) {		pos = findPosition(ch);		if (pos != -1)			fileOut<<codeArray[pos].ptr;		fileIn>>ch;	}	fileIn.close();	fileOut.close();	//打開outFilename, secondOutName,分別提供輸入輸出	fileIn.open(outFilename, ios::in);	fileOut.open(secondOutName, ios::out);	if (!fileIn || !fileOut) {		cerr<<"File could not open."<<endl;		exit(1);	}	//把outFileName文件中的編碼進行譯碼,并把譯碼結果寫入secondOutName文件	const int longestLen = getLongestCodeLength();	char *p = new char[longestLen+1];	int k=0;	fileIn>>ch;	while (fileIn && !fileIn.eof()) {		if (k < longestLen) {			p[k++]=ch;			p[k]='\0';			pos = isEqual(p);			if (pos != -1) {				fileOut<<arrayTree[pos].info;				k=0;			}		}		else {			cerr<<"The code is wrong."<<endl;			exit(1);		}		fileIn>>ch;	}	fileIn.close();	fileOut.close();}		//huffman.cpp end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区| 亚洲国产成人av好男人在线观看| 欧美高清性hdvideosex| 欧美亚洲综合一区| 99re8在线精品视频免费播放| 成人午夜av电影| 国产一区二区三区在线看麻豆| 蜜桃传媒麻豆第一区在线观看| 视频一区二区三区在线| 日韩av成人高清| 精品一区二区三区久久久| 麻豆国产精品官网| 国产成人欧美日韩在线电影| 国产成人丝袜美腿| 91蜜桃免费观看视频| 欧美日韩国产综合草草| 欧美一区三区二区| 久久亚洲精品小早川怜子| 国产精品色婷婷| 一区二区三区精品在线| 免费观看成人鲁鲁鲁鲁鲁视频| 蜜臀精品久久久久久蜜臀| 国产精品自拍三区| 91视频com| 精品久久国产老人久久综合| 国产精品看片你懂得| 一区二区三区在线视频观看 | 国产精品私人影院| 最好看的中文字幕久久| 性做久久久久久免费观看| 狠狠色丁香久久婷婷综合_中| 国产成人精品www牛牛影视| 欧美在线一区二区三区| 日韩美女天天操| 亚洲精品免费在线观看| 看国产成人h片视频| 99久久综合精品| 欧美军同video69gay| 国产女主播视频一区二区| 亚洲一区国产视频| 国产91丝袜在线观看| 欧美精品九九99久久| 国产精品无圣光一区二区| 日韩国产精品久久| 99r国产精品| 久久久久久久精| 日本亚洲电影天堂| 欧美在线播放高清精品| 国产人久久人人人人爽| 亚洲成国产人片在线观看| av一区二区不卡| 久久久精品一品道一区| 秋霞av亚洲一区二区三| 色噜噜夜夜夜综合网| 国产精品免费免费| 国产成人精品三级| 久久久精品免费网站| 日韩福利视频导航| 欧美日韩精品电影| 亚洲一区二区三区四区五区黄| 99久久精品国产一区二区三区| 久久精品人人爽人人爽| 久久成人综合网| 日韩欧美在线综合网| 日日夜夜精品视频天天综合网| 91亚洲国产成人精品一区二区三| 久久久精品tv| 国产成人丝袜美腿| 久久精品视频在线看| 激情国产一区二区| 日韩一级二级三级| 久久国产精品一区二区| 精品国产一二三区| 国内一区二区在线| 久久亚洲私人国产精品va媚药| 国内精品视频一区二区三区八戒| 91精品国产综合久久精品性色| 亚洲一区二区视频在线观看| 色婷婷久久99综合精品jk白丝| 亚洲欧美国产毛片在线| 99国产一区二区三精品乱码| 亚洲黄色免费网站| 在线视频国内自拍亚洲视频| 亚洲午夜在线电影| 4438x成人网最大色成网站| 蜜桃视频一区二区三区| 欧美精品一区二区在线播放| 国产精品一区二区三区99| 国产欧美精品一区二区色综合| 成人动漫中文字幕| 一区二区三区四区精品在线视频| 欧美性欧美巨大黑白大战| 琪琪一区二区三区| 国产区在线观看成人精品| 97久久超碰国产精品| 亚洲高清中文字幕| 久久综合九色综合97婷婷女人| 国产成人av福利| 亚洲视频电影在线| 欧美一区二区成人| 国产91精品精华液一区二区三区 | 欧美a级理论片| 久久久久久一二三区| a4yy欧美一区二区三区| 一区二区三区在线影院| 日韩女优av电影| 成年人国产精品| 婷婷一区二区三区| 久久精品人人爽人人爽| 欧美系列亚洲系列| 国产一区二区久久| 亚洲影视资源网| 日本一区二区三区国色天香| 欧美日韩精品欧美日韩精品一 | 久久精品一区二区三区不卡牛牛| 99精品视频在线免费观看| 性感美女久久精品| 国产精品久久久久久久岛一牛影视| 欧洲一区在线观看| 国产精品一区二区久激情瑜伽| 亚洲永久精品国产| 国产精品三级视频| 日韩欧美久久久| 欧美日韩一区二区三区四区| 国产精品系列在线播放| 天天影视网天天综合色在线播放 | 欧美日本韩国一区| 成人av在线播放网址| 理论片日本一区| 一区二区三区电影在线播| 欧美精品一区男女天堂| 欧美一区二区三区在线电影| 91视频.com| 成人av在线网| 国产精品一级片在线观看| 免费成人在线观看| 亚洲一二三四久久| 1区2区3区精品视频| 久久久噜噜噜久久中文字幕色伊伊| 5566中文字幕一区二区电影| 91黄色免费版| 91香蕉视频mp4| 波多野结衣一区二区三区| 国模娜娜一区二区三区| 美女网站色91| 久久精品99国产精品日本| 香蕉av福利精品导航| 亚洲在线中文字幕| 亚洲精品免费在线播放| 亚洲欧美日韩一区二区| 亚洲欧美综合在线精品| 国产精品久久三| 国产精品丝袜一区| 国产精品五月天| 亚洲同性同志一二三专区| 日本一二三不卡| 国产精品乱人伦| 亚洲欧洲日产国码二区| 亚洲三级在线免费| 亚洲一区二区精品3399| 亚洲影院久久精品| 日本视频免费一区| 久久av中文字幕片| 国产精品一区2区| 成人av先锋影音| 色噜噜久久综合| 91精品麻豆日日躁夜夜躁| 精品久久人人做人人爽| 国产女人aaa级久久久级| 国产精品久久精品日日| 亚洲一区二区四区蜜桃| 麻豆精品视频在线观看| 国产一区视频导航| 91在线视频播放地址| 91黄视频在线| 2023国产精品| 一区二区三区在线观看视频| 水野朝阳av一区二区三区| 激情综合五月婷婷| 972aa.com艺术欧美| 9191成人精品久久| 国产欧美一二三区| 亚洲主播在线观看| 日本不卡1234视频| 国产成人在线视频网址| 欧美色男人天堂| 久久精品一区二区三区四区| 亚洲激情自拍视频| 国产又黄又大久久| 在线免费亚洲电影| www国产精品av| 亚洲激情欧美激情| 精品一二线国产| 欧美视频三区在线播放| 精品国产1区2区3区| 亚洲高清在线精品| 成人永久免费视频| 日韩精品一区二区三区三区免费| 国产精品福利影院| 久久成人麻豆午夜电影|