哈夫曼編碼 C語言實現

2021-10-05 09:51:36 字數 1266 閱讀 6012

c語言實現哈夫曼編碼

程式功能:提供一段字串,輸出哈夫曼編碼壓縮後的總位元數(計入小寫字母和空格)

#include#include//定義二叉樹結構

typedef struct node

bitnode, *bitree;

//定義棧結構,此處的棧用來儲存二叉樹節點

typedef structstack;

//操作棧的方法

void initstack(stack *s)

void push(stack *s,bitree a)

bitree pop(stack *s)

//把數變成節點併入棧,便於後續操作

stack forest(int *arr,int length)//入棧跟陣列順序是反的

return s;

}void sortstack(stack *s)//讓棧中頂部元素小底部元素大}}

}bitree buildtree(stack *s)

return s->elem[s->top];

}//先序遍歷,用於測試生成樹的結果

void inorder(bitree tree)

}//用來記錄最後的和,不得已的全域性變數,實在不知道如果傳進去該怎麼搞

int sum=0;

//先序遍歷的乙個變形

void caculation(bitree tree,int step)

//每走一步帶權路徑應該加一

caculation(tree->lchild,step+1);

caculation(tree->rchild,step+1);

}}int dealstring(char *s,int *arr)

;//存放每個字母的個數,a對應0,多出來的乙個放空格

for(int i=0;s[i]!='\0';i++)

num[26]++;

continue;//後面的不應該執行了

}if(num[s[i]-97]==0)//如果這個字母從未出現過

//a的ascii碼是97

num[s[i]-97]++;

}for(int i=0,j=0;i<=26;i++)//把陣列轉移到arr裡去

}int temp;

for(int i=0;i<=count-2;i++)//給arr氣泡排序,使其降序}}

return count;

}int main()

C語言實現哈夫曼編碼

include define n5 葉子數目 define m 2 n 1 結點總數 define maxval 10000.0 define maxsize100 哈夫曼編碼的最大位數 typedef struct hufmtree typedef struct codetype void huf...

C語言實現哈夫曼編碼

include include define n 50 葉子結點數 define m 2 n 1 樹中結點總數 typedef struct htnode typedef struct hcode void createht htnode ht,int n 由ht的葉子結點構造完整的哈夫曼樹 els...

哈夫曼樹編碼C語言實現

哈夫曼樹編碼c語言實現,實現哈夫曼樹編碼的演算法可分為兩大部分 1 構造哈夫曼樹 2 在哈夫曼樹上求葉結點的編碼 哈夫曼樹構造演算法 1 由給定的n個權值構造n棵只有乙個葉結點的二叉樹,從而得到乙個二叉樹的集合f 2 在f中選取根結點的權值最小和次小的兩棵二叉樹作為左,右子樹構造一棵新的二叉樹,這棵...