freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

哈夫曼樹的應(yīng)用數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(編輯修改稿)

2025-04-09 03:36 本頁面
 

【文章內(nèi)容簡介】 ,每端都需要一個完整的編 /譯碼系統(tǒng)。 為這樣的信息 收 發(fā)站寫一個哈夫曼碼的編 /譯碼系統(tǒng)。 2. 確定解決方案 設(shè)計建立帶權(quán)的哈夫曼樹,確定哈夫曼樹的類與成員函數(shù),以及各函數(shù)之間的調(diào)用關(guān)系,采用動態(tài)數(shù)組的存儲結(jié)構(gòu)存儲所需要的數(shù)據(jù),通過不同的函數(shù)來實現(xiàn)編碼,譯碼以及打印二進制編碼、哈夫曼樹,把不同的數(shù)據(jù)存入不同的 txt 文件中,通過 主函數(shù)調(diào)用來實現(xiàn)功能檢測。 3. 輸入的形式和輸入值的范圍 手動或者從文本中讀入數(shù)據(jù)的形式初始化哈夫曼樹,從鍵盤中或者文件中讀入數(shù)據(jù),以字母 AZ 代表結(jié)點,以自然數(shù)代表權(quán)值,字符串提示使用者所要執(zhí)行的操作。 在顯示器界面上或者以文本的形式來實現(xiàn)程序調(diào)試的輸出。 ( 1) I:初始化( Initialization)。從終端讀入字符集大小 n,以及 n 個字符和 n個權(quán)值,建立哈夫曼樹,并將它存于文件 hfmTree 中。 ( 2) E:編碼( Encoding)。利用已建好的哈夫曼樹(如 不在內(nèi)存,則從文件hfmTree 中讀入),對文件 ToBeTran 中的正文進行編碼,然后將結(jié)果存入文件CodeFile 中。 ( 3) D:譯碼( Decoding)。利用已建好的哈夫曼樹將文件 CodeFile 中的代碼進 4 行譯碼,結(jié)果存入文件 TextFile 中。 ( 4) P:打印代碼文件( Print)。將文件 CodeFile 以緊湊格式顯示在終端上,每行 50 個代碼。同時將此字符形式的編碼文件寫入文件 CodePrin 中。 測試數(shù)據(jù) : ( 1) 利用下面這道題中的數(shù)據(jù)調(diào)試程序。某系統(tǒng)在通信聯(lián)絡(luò)中只可能出現(xiàn)八種字符,其概率分別為 , , , , , , , ,試設(shè)計哈夫曼編碼。 ( 2)用下表給出的字符集和頻度的實際統(tǒng)計數(shù)據(jù)建立哈夫曼樹,并實現(xiàn)以下報文的編碼和譯碼: “THIS PROGRAM IS MY FAVORITE”。 字符 空格 A B C D E F G H I J K L M 頻度 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 頻度 57 63 15 1 48 51 80 23 8 18 1 16 1 實現(xiàn)提示 : ( 1) 編碼結(jié)果以文本方式存儲在文件 CodeFile 中。 ( 2) 用戶界面可以設(shè)計為 “菜單 ”方式:顯示上述功能符號,再加上 “Q”,表示退出運行 Quit。請用戶鍵入一個選擇功能符。此功能執(zhí)行完畢后再顯示此菜單,直至某次用戶選擇了 “Q”為止。 ( 3) 在程序的一次執(zhí)行過程中,第一次執(zhí)行 I, D 或 E 命令之后,哈夫曼樹已經(jīng)在內(nèi)存了,不必再讀入。每次執(zhí)行中不一定執(zhí)行 I 命令,因為文件 hfmTree可能早已建好。 二 、 概要設(shè)計 1. 主程序的流程圖: 開始 選擇菜單項 主菜單 請重新輸入選項 判斷選項 是否正確 否 是 圖一:主程序流程圖 5 2.程序中數(shù)據(jù)類型的定義: 用到三組結(jié)構(gòu)體,分別是哈夫曼樹的動態(tài)數(shù)組存儲結(jié)構(gòu) *HuffmanTree,哈夫曼編碼表的存儲結(jié)構(gòu) HuffmanCode,字符結(jié)點的動態(tài)數(shù)組存儲結(jié)構(gòu) wElem 以及哈夫曼樹類定義 class Huffman。 3. 各程序模塊之間的層次 (調(diào)用 )關(guān)系: 主函數(shù) main()調(diào)用初始化,編碼,譯碼,打印二進制編碼,打印哈夫曼樹這五個子函數(shù);進入初始化功能后調(diào)用手動輸入,文本讀入,默認文本這三個函數(shù);進入編碼功能后調(diào)用手動編碼,文本讀入編碼這兩個函數(shù);進入譯碼功能后調(diào)用手動譯碼,文本讀入譯碼這兩個函數(shù) (如圖 2 所示 )。 主函數(shù) 初始化 編碼 譯碼 打印編碼代碼 退出 手動輸入 默認文本 從文件讀入 從文件讀入 圖二 :各程序模塊之間的層次(調(diào)用)關(guān)系 6 三、 詳細設(shè)計 1. 哈夫曼樹存儲及類的定義: include iostream include cstdio include include queue include fstream using namespace std。 define MAXN 60 define INF 9999 int date[40]={INF,64,13,22,32,103,21,15,47,57,1,5,32, 20,57,63,15,1,48,51,80,23,8,18,1,6,1,INF,INF,INF,INF,INF,INF,INF,186}。 //字符 c 的頻率存放在 date[65c+i]中 int n=27。 typedef struct node{ int fa,lchild,rchild,w。 //父親,左孩子,右孩子,權(quán)值; }hfmTree。 char info[30]。 typedef struct{ char code[50]。 int start。 }Hfmcode。 Hfmcode hfmcode[MAXN]。 //哈夫曼編碼 hfmTree hfmtree[MAXN]。 //哈夫曼樹 void inithead(int n,char d[]) 。 //初始化表 void initialization(int n,char d[])。 //建樹 void encoding(int n) 。 //編碼 void decoding()。 //譯碼 void print() //打印編碼代碼 : void inithead(int n,char d[]) //初始化表 void initialization(int n,char d[]) //建樹 void encoding(int n) //編 碼 void decoding()。 //譯碼 void print() //打印編碼代碼 void face() //輸出菜單界面 7 int main() { char c。 face()。 int fi,fe,fd。 fi=fe=fd=0。 printf(數(shù)據(jù)從 “”文件中輸入 !\n)。 while(1) { printf()。 cinc。 if(c=39。a39。amp。amp。c=39。z39。) c=32。 if(c==39。Q39。) break。 switch(c) { case 39。I39。: fi=1。 init()。 printf(初始化完畢! \n)。 break。 case 39。E39。: if(fi==0) { printf(請先初始化操作! \n)。 break。 } fe=1。 encoding(n)。 printf(將 “”中的正文 )。 printf(編碼完成!結(jié)果已 存在文件 “”中 \n)。 break。 case 39。D39。: if(fi==0) { printf(請先初始化操作! \n)。 break。 } if(fe==0) { printf(請先 進行編碼操作! \n)。 break。 } fd=1。 8
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1