資料結構與演算法 哈夫曼樹(原始碼)!

2021-06-22 15:47:48 字數 2362 閱讀 5352

原文出處:

這些天明白了乙個道理,搞技術也是需要激情的。

也不知道為什麼這段過的感覺特別的不爽,也不知道是因為快要考試了,心裡沒底,而帶來的恐懼,還是

搞技術太久,心裡想放個假,總之是過的暈暈乎乎,做事情也總是反應遲鈍,思維也不快,我爸媽說我是因為睡

不夠,但是我覺得我一晚上睡6個半小時,也不算短了。真不知道這樣的感覺還要持續多久。

習慣了,下課就做到電腦前,習慣了,晚上乙個人回宿舍,習慣了,餓了隨便吃點,習慣了,乙個人鑽研。

當一切開始成為了定式,總覺得生活變的簡單。有一些人羨慕我,覺得我有很好的環境學技術。

但是我現在也不覺得我有什麼好自滿的東西。不過是個再普通不過的走在技術道路上的菜鳥。

心裡有千萬般的無奈,心裡有數不清的彷徨。

我渴望曾經的激情。

其實我也不想說那麼多,耽誤看帖人的時間,但是心裡總有些不吐不快。

師兄總是開玩笑的說我現在開始「淡定了」。

朋友們也覺得我越來越「沉默了」。

現在也不敢想以後會成什麼樣子,一切都未知。

我不想到了以後「生無可戀,死無可依」(這是乙個老程式設計師的感悟)。

但是我不能停止,停止就是倒退。

好啦,不羅嗦了,下面是我的程式:

#include#define maxvalue 100000

using namespace std;

const int n=4;//葉子節點個數

//構造哈夫曼樹結點

typedef structhnodetype;

hnodetype hfmtree[2*n-1];//結點數

//構造哈夫曼編碼陣列

typedef structhcodetype;

hcodetype hfmcode[n];

//建立哈夫曼樹

void createhfmtree(hnodetype hfmtree,int n)

cout<<"請輸入結點權值:"<>hfmtree[i].weight;

}for(i=0;i

這個是雛形,下面我們要實現的功能是,輸入乙個含有n位a,b,c,d四種字母的字串。

然後轉換成只含有0,1的**串。之所以要使用哈夫曼樹是因為哈夫曼樹是最優樹。根據權值來實現最短編碼。

下面是實現自動轉碼的程式:

#include#define maxvalue 100000

using namespace std;

const int n=4;//葉子節點個數

string l;

int size;

//構造哈夫曼樹結點

typedef structhnodetype;

hnodetype hfmtree[2*n-1];//結點數

//構造哈夫曼編碼陣列

typedef structhcodetype;

hcodetype hfmcode[n];

//建立哈夫曼樹

void createhfmtree(hnodetype hfmtree,int n)

cout<<"*******************哈夫曼樹字串最優轉碼程式***********************"<>l;

std::string str(l);

size=str.size();

for(int i=0;i}for(i=0;ielse if(hfmtree[j].parent==-1&&hfmtree[j].weight}

hfmtree[m1].parent=n+i;hfmtree[m2].parent=n+i;

hfmtree[n+i].weight=hfmtree[m1].weight+hfmtree[m2].weight;

hfmtree[n+i].lchild=m1;

hfmtree[n+i].rchild=m2;}}

//轉化編碼

void createhfmcode(hnodetype hfmtree,hcodetype hfmcode)

for(j=cd.start+1;jhfmcode[i].bit[j]=cd.bit[j];

hfmcode[i].start=cd.start+1;}}

//主函式

int main()

k++;

cout<}cout<<"轉碼後的字串為:"

size=str.size();

for(int i=0;ielse if(str.at(i)=='b')

else if(str.at(i)=='c')

else if(str.at(i)=='d')

else

}return 0;

}

資料結構與演算法 哈夫曼樹(原始碼)!

include iostream define maxvalue 100000 using namespace std const intn 4 葉子節點個數 構造哈夫曼樹結點 typedef struct hnodetype hnodetype hfmtree 2 n 1 結點數 構造哈夫曼編碼陣...

資料結構 哈夫曼樹與哈夫曼編碼

1 路徑 由乙個結點到另乙個結點之間的所有分支共同構成。2 路徑長度 結點之間的分支數目。3 樹的路徑長度 從樹的根結點到其他所有結點的路徑長度之和。4 權 賦予某一實體的值。在資料結構中,實體包括結點和邊,所以對應有結點權和邊權。5 結點的帶權路徑長度 結點與樹的根結點之間的路徑長度與結點權的乘積...

資料結構 哈夫曼樹與哈夫曼編碼

include pch.h include 哈夫曼樹類huffmantree的定義 huffman樹結點類treenode宣告 template class t class huffmannode 建構函式 huffmannode getleft void const void setleft hu...