xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

哈夫曼編碼與譯碼的c++實(shí)現(xiàn),主要功能哈夫曼樹(shù)的創(chuàng)建,可把數(shù)據(jù)轉(zhuǎn)換為編碼后存入文件,也可以對(duì)文件中的信息進(jìn)行編碼與譯碼,代碼清晰整潔,源碼內(nèi)有詳細(xì)的注釋可輔助理解,功能符合課程設(shè)計(jì)的要求,并加以擴(kuò)展。

資源截圖

代碼片段和文件信息

/*更新*/?

/*從文件讀取數(shù)據(jù)*/?
/*
測(cè)試數(shù)據(jù)
Hello?World?
1?1?3?3?2?1?1?2?1?3?1
010001011011100000110011100110001111001
*/?

#include
#include
#include
using?namespace?std;

//typedef?char?ElementType;
typedef?char?**?HuffmanCode;
typedef?struct?
{
char?data;?
int?weight;//節(jié)點(diǎn)的權(quán)值
int?parentlchildrchild;//節(jié)點(diǎn)的雙親,左孩子,右孩子的下標(biāo)?
}HtNode*HuffmanTree;

typedef?struct?Node?
{
char?data;
struct?Node?*next;
}Node*DeNode;

void?menu();?
//創(chuàng)建哈夫曼樹(shù)HTn個(gè)數(shù)據(jù)?
bool?CreatHuffmanTree(HuffmanTree?&HTint?n);

//在哈夫曼樹(shù)HT中選擇兩個(gè)雙親域?yàn)?的權(quán)值最小的兩個(gè)節(jié)點(diǎn)?
void?Select(HuffmanTree?&HTint?rangint?&min1int?&min2);

//根據(jù)哈夫曼樹(shù)求哈夫曼編碼
void?CreatHuffmanCode(HuffmanTree?HTHuffmanCode?&HCint?n);?
//翻譯報(bào)文?
void?TraverseData(HuffmanTree?HTHuffmanCode?&HCstring?dataint?n);
//譯碼?
bool?deHuffmanTree(HuffmanTree?HTstring?codeint?n);?
//用鏈表保存譯碼信息?
void?insert(char?data);

DeNode?Head;
int?flag?=?0;
int?main()
{
Head?=?new?Node;
Head->next?=?NULL;
while(1)
{
menu();
}

return?0;
}

void?menu()
{
HuffmanTree?HT;
HuffmanCode?HC;
int?n;
cout?< cout?< cout?< cout?< cout?< cout?< int?option;
cout<<“請(qǐng)選擇操作:“;
cin>>option;
if(1?==?option)
{
flag?=?1;
cout<<“輸入葉子結(jié)點(diǎn)的個(gè)數(shù):“;
cin>>n;
if(CreatHuffmanTree(HTn))
{
CreatHuffmanCode(HTHCn);
for(int?i?=?1;i?<=?n;i++)
{
int?j?=?0;
cout< while(HC[i][j]?!=?‘\0‘)
{
cout< j++;
}
cout< }
string?data;

int?t;
cout<<“\n【1】文件讀取“;
cout<<“\n【2】現(xiàn)在輸入“;?
cout<<“\n請(qǐng)選擇操作:“;
cin>>t;
if(1?==?t)
{
ifstream?infile(“數(shù)據(jù).txt“ios_base::in);
if(!infile.is_open())
{
ofstream?outfile(“數(shù)據(jù).txt“);
outfile.close();
//cerr?< //exit(0);
}
if(infile.peek()==EOF)
{
cout?< return;
}
else
{
getline(infiledata);
}?
}?
if(2?==?t)
{
cout<<“\n請(qǐng)輸入翻譯的數(shù)據(jù):“;
//cin>>data;
fflush(stdin);
getline(cindata);//輸入一行數(shù)據(jù)?
}
cout<<“轉(zhuǎn)碼如下:\n“;
TraverseData(HTHCdatan);?
}
}
if(2?==?option)
{
if(0?==?flag)
{
cout<<“\n請(qǐng)先構(gòu)建哈夫曼樹(shù)\n“;
return;?
}
string?code;
int?t;
cout<<“\n【1】文件讀取“;
cout<<“\n【2】現(xiàn)在輸入“;?
cout<<“\n請(qǐng)選擇操作:“;
cin>>t;
if(1?==?t)
{
ifstream?infile(“編碼.txt“ios_base::in);
if(!infile.is_open())
{
ofstream?outfile(“編碼.txt“);
outfile.close();
//cerr?< //exit(0);
}
if(infile.peek()==EOF)
{
cout?< return;
}
else
{
getline(infile?c

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????7856??2016-12-07?17:47??哈夫曼編碼譯碼的設(shè)計(jì)與實(shí)現(xiàn)6.0.cpp
?????文件?????1928733??2016-12-10?12:03??哈夫曼編碼譯碼的設(shè)計(jì)與實(shí)現(xiàn)6.0.exe
?????文件??????????12??2016-12-09?10:44??數(shù)據(jù).txt
?????文件??????181760??2016-12-12?13:35??數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì).doc
?????文件???????16470??2016-12-09?12:28??流程圖.PNG
?????文件???????????0??2016-12-09?10:54??編碼.txt

評(píng)論

共有 條評(píng)論

相關(guān)資源