哈夫曼編碼解碼器

2021-10-02 15:52:43 字數 1646 閱讀 3866

總結一下這次的課程設計,遇到的問題是如何解決的。

功能:將權值資料存放在資料檔案data.txt中。

鍵盤輸入字符集大小n、n個字元和n個權值,建立哈夫曼樹。

利用建好的哈夫曼樹生成哈夫曼編碼。

使用data.txt中的權值資料生成的哈夫曼編碼,將檔案text.txt中的字串編碼儲存到huffmancode.txt檔案中。

使用data.txt中的權值資料生成的哈夫曼編碼,將檔案huffmancode.txt中的哈夫曼編碼解碼生成字串儲存到text.txt檔案中。

輸出哈夫曼編碼到code.txt檔案。

其中,功能1、2、3、6是基本課程設計要求的功能,為了增加**的實用性,

導師提議我增加4、5功能。

結構體定義:

typedef struct  htnode , *huffmantree;//定義二叉樹結點指標型別

typedef structhcnode , *huffmancode;

實現**:

功能:

#include #include #include #include #include "huff2.h"

#define max_line 1024

//選擇最小的兩個結點

void select(huffmantree &ht,int i,int &s1,int &s2)

void menu2()

主函式小黑窗功能選項的實現:

顯示出**的功能,二級選單的穿接,友好的提示詞。

void main()

; char code[10000]=;

huffmantree ht;

huffmancode hc;

menu1();

scanf("%d",&fun);

switch(fun)

menu2();

scanf("%d",&fun);

}break;

case 2:

init2(ht,hc);

menu2();

scanf("%d",&fun);

while(fun)

menu2();

scanf("%d",&fun);

}break;

case 3:

init1(ht,hc);

menu2();

scanf("%d",&fun);

while(fun)

menu2();

scanf("%d",&fun);

}break;

case 0:

printf("謝謝使用!\n");

exit(0);

default:

printf("你的輸入錯誤!請重新啟動!\n");

break;

}}

總結:這次的資料結構使我認識到了,**應該要認識到**存在的意義,是為什麼服務的,要充分的想到使用者會遇到的誤點,通過**強制阻止或者友好的提示詞提示使用者,從而增強**的健壯性。當實現了最基本的功能之後要看看能不能提高**的實用性。畢竟只有有用的**才有存在的意義。最後,bug無處不在,只有一次次的除錯、修改才能使bug無處可躲,當遇到暫時無法解決的bug,可以先進行其他的地方,並從別的方向帶入,或許就可以解決了。

c 實驗8 哈夫曼編碼 解碼器

此次實驗的注釋解析多加不少 若對小夥伴們有幫助 希望各位麻煩點個關注 多謝 1 由給定的n個權值構造n棵只有根結點的二叉樹,從而得到乙個二叉樹森林f 2 在二叉樹森林f中選取根結點的權值最小和次小的兩棵二叉樹作為新的二叉樹的左右子樹構造新的二叉樹,新的二叉樹的根結點權值為左右子樹根結點權值之和。3 ...

哈夫曼樹編碼解碼器(你們懂的)

希望點讚一下,哈哈哈哈哈 define maxsize 100 哈夫曼編碼的最大位數 typedef struct hufmtree typedef struct codetype void huffman hufmtree tree,int n,int m 建立哈夫曼樹 void huffmanc...

哈夫曼樹編碼解碼器 簡化版

include include include include include include include include include include define debug a cout a else if minval2 ht i weight querypos t t.s1 minp...