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中選取根結點的權值最小和次小的兩棵二叉樹作為左,右子樹構造一棵新的二叉樹,這棵...