資料結構(五) 樹和二叉樹之Huffman編碼

2021-09-24 19:36:44 字數 2382 閱讀 9208

定義的結構體

typedef

struct node

node;

int

calculateweight

(char a,

char b,

float weight)

len1=i;

//記錄輸入字元的個數

i=0;

while

(a[i]

!='\0'

)//計算輸入資料的權重}if

(j==len2)

//已記錄資料不存在該字元則新增該字元

}for

(i=0

;i)return len2;

//返回不重複的字元數

}

void

codenum

(node t,

int l)

else

if(temp.rch!=-1

)//檢視是否有右子樹}if

(temp.rch==-1

&&temp.lch==-1

)}}

#include

#include

#include

#define max 1000

typedef

struct node

node;

intcalculateweight

(char a,

char b,

float weight)

;//輸入字串計算權重,返回字串長度

node *

huffmantree

(char b,

float weight,

int len)

;//計算huffman樹

void

codenum

(node t,

int l)

;//計算字首編碼並輸出

intmain()

,b[max]=;

float weight[max]=;

int len;

node *t;

printf

("請輸入需要編譯的字串(以輸入回車為截止):\n");

gets

(a);

len=

calculateweight

(a,b,weight)

; t=

huffmantree

(b,weight,len)

;codenum

(t,len)

;printf

("以上為編碼表\n");

return0;

}int

calculateweight

(char a,

char b,

float weight)

len1=i;

//記錄輸入字元的個數

i=0;

while

(a[i]

!='\0'

)//計算輸入資料的權重}if

(j==len2)

//已記錄資料不存在該字元則新增該字元

}for

(i=0

;i)return len2;

//返回不重複的字元數

}node *

huffmantree

(char b,

float weight,

int len)

for(i=

0;i)//葉結點的賦值

for(j=len;j)//補充二叉樹

else

if(t[i]

.weight//尋找權重次小點}}

t[j]

.weight=t[p1]

.weight+t[p2]

.weight;

//生成父母

t[p1]

.parent=j;

//二叉樹關係的建立

t[p2]

.parent=j;

t[j]

.lch=p1;

t[j]

.rch=p2;

small1=1;

small2=1;

len++

;//新增結點算入總長

}return t;

}void

codenum

(node t,

int l)

else

if(temp.rch!=-1

)//檢視是否有右子樹}if

(temp.rch==-1

&&temp.lch==-1

)}}

資料結構(五) 樹和二叉樹

樹的定義 樹的概念 二叉樹的概念 二叉樹的性質 性質1 在二叉樹的第i i 1 層上至多有2i 1個結點。性質2 深度為k的二叉樹最多有2k 1個結點。性質3 具有n個結點的完全二叉樹的深度為 log2n 1 性質4 對任意二叉樹t,如果度數為0結點數為n0,度數為1結點數為n1,度數為2結點數為n...

資料結構實驗五 樹和二叉樹

資料結構實驗五 樹和二叉樹 一 實驗目的 1.回樹和二叉樹的邏輯結構和儲存方法,清楚掌握樹和二叉樹的遍歷操作。2.學習樹的相關知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗時間 準備時間為第10周到第12前半周,具體集中實驗時間為12周周四。2個學時。三 實驗內...

資料結構 樹和二叉樹

第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...