狠狠干影院/欧美午夜电影在线观看/高黄文/国产精品一区二区在线观看完整版

哈夫曼樹實(shí)驗(yàn)報(bào)告,(2)

| 瀏覽次數(shù):

 實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱

 Huffman 編碼

  專業(yè)班級(jí)

 計(jì)科三班

  姓名

  學(xué)號(hào)

  指導(dǎo)教師

 日期

 2014、12、20

 一、實(shí)驗(yàn)?zāi)康?/p>

  熟練掌握二叉樹應(yīng)用(Huffman 編碼)得基本算法實(shí)現(xiàn)。

 二、實(shí)驗(yàn)內(nèi)容

 ? 1.對(duì)輸入得一串電文字符實(shí)現(xiàn)Huffman編碼,再對(duì) Huffman 編碼生成得代碼串進(jìn)行譯碼,輸出電文字符串。實(shí)現(xiàn)功能如下:

 ? Huffman 樹得建立 ? Huffman編碼得生成 編碼文件得譯碼 三、實(shí)驗(yàn)要求

 ??設(shè)計(jì)思路: 數(shù)據(jù)結(jié)構(gòu): #define n 100// 數(shù)點(diǎn)結(jié)子葉??#define m 2*n-1 // Huffman 樹中結(jié)點(diǎn)總數(shù) typedef struct {

 ;thgiew tni? //權(quán)值

 針指親雙及子孩右左//

 ;tnerap , dlihcr

 , dlihcl tni?}HTNode;

  //樹中結(jié)點(diǎn)類型 typedef HTNode HuffmanTree[m+1]; 0// 用不元單號(hào)?主要實(shí)現(xiàn)函數(shù): ? 統(tǒng)計(jì)字符串中字符得種類以及各類字符得個(gè)數(shù)得函數(shù) ? 構(gòu)造 Huffman 樹得函數(shù) ? Huffman 編碼得函數(shù) ? 建立正文得編碼文件得函數(shù) ? 代碼文件得譯碼函數(shù) ? 主函數(shù) 四、實(shí)驗(yàn)概要設(shè)計(jì)

 1)功能框圖

 Huffman編碼程序 Huffman 樹得建立 從葉子到根逆向求編碼Huffman 編碼得生成 編碼文件得譯碼 退出

 五、

 使用說明

 1、運(yùn)行環(huán)境:VC++ 6、0

  2、首先選擇主控菜單中得操作1,即建表,然后進(jìn)行其它操作. 六 .實(shí)驗(yàn)截圖

  七

 實(shí)驗(yàn)體會(huì)

 1、構(gòu)建哈夫曼樹得關(guān)鍵在于找最小樹;在 F 中選擇兩棵根結(jié)點(diǎn)權(quán)值最小得樹作為左右子樹構(gòu)造一棵新得二叉樹,且至新得二叉樹得根結(jié)點(diǎn)得權(quán)值為其左右子樹上根結(jié)點(diǎn)得權(quán)值之與。

 2、由于學(xué)習(xí)得不足沒有實(shí)現(xiàn)編碼文件得譯碼,今后會(huì)加以改進(jìn) (╯﹏╰)

 3、在逆向求編碼得 for循環(huán)里犯了一個(gè)邏輯錯(cuò)誤導(dǎo)致求出來得 3、4位編碼串行,嘗試了多鐘數(shù)據(jù)輸入才找到原因所在,并加以改正,編寫程序需一步一步得去調(diào)試并找到錯(cuò)誤所在。

 附源程序: :

 ?#include<stdio、h> #include<stdlib、h> #include<string、h> #include<malloc、h> typedef struct

 {

  char data;

 //結(jié)點(diǎn)字符

 int

 weight;

 //結(jié)點(diǎn)權(quán)值

 int parent,lchild,rchild;

  //父子結(jié)點(diǎn)

 }HTNode,* HuffmanTree(cuò); typedef char * *HuffmanCode; void Select(HuffmanTree HT, int m, int& s1, int& s2)

 {

 int i;

 s1 = s2 = 1;

 for(i=1; i<=m; i++)

 {

 if (HT[i]、parent==0)

 {

 s1=i;

 break;

 }

 }

 for(i=i+1; i<=m; i++)

 {

 if (HT[i]、parent==0 && HT[s1]、weight>HT[i]、weight)

  s1=i;

 }

 for(i=1; i<=m; i++)

 {

 if(HT[i]、parent==0&&i!=s1)

  {

 s2=i;

 break;

  }

 }

 for(i=i+1; i<=m; i++)

 {

 if(HT[i]、parent==0 && HT[i]、weight<HT[s2]、weight && i!=s1)

  s2=i;

 } } void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int* w,int n) {

  //w 存放 n 個(gè)字符得權(quán)值,構(gòu)造赫夫曼樹 HT,并求出n個(gè)字符得赫夫曼樹編碼 HC int f;

 int m,i,s1,s2; int c; HuffmanTree(cuò) p; char *cd; if (n<=1)

  return; m=2*n-1; HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); for(p=HT+1,i=1;i<=n;++i,++p,++w)

  {

 (*p)、weight=*w;

  (*p)、parent=0;

 (*p)、lchild=0;

 (*p)、rchild=0; } for( ;i<=m;++i,++p)

  (*p)、parent=0; for(i=n+1;i<=m;++i)

 //建立赫夫曼樹 {

  //在HT[1、、i-1]選擇parent 為 0 且 weight最小得兩個(gè)節(jié)點(diǎn),其序號(hào)分別為 s1,s2、 Select(HT,i-1,s1,s2); HT[s1]、parent=i;HT[s2]、parent=i;

 HT[i]、lchild=s1;HT[i]、rchild=s2; HT[i]、weight=HT[s1]、weight+HT[s2]、weight; } //****從葉子到根逆向求每個(gè)字符得赫夫曼編碼**** HC=(HuffmanCode)malloc((n+1)*sizeof(char*));//分配n個(gè)字符編碼得頭指針向量 cd=(char*)malloc(n*sizeof(char));

  //分配求編碼得工作區(qū)間 cd[n-1]="\0";

  //編碼結(jié)束符 for(i=1;i<=n;++i)

  //逐個(gè)字符求赫夫曼樹編碼 {

  int start;

 start=n-1;

  //編碼結(jié)束符位置 for(c=i,f=HT[i]、parent;f!=0;c=f,f=HT[f]、parent)

 //從葉子到根逆向求編碼 if(HT[f]、lchild==c) cd[--start]='0"; else cd[--start]="1'; HC[i]=(char *)malloc((n-start)*sizeof(char));

 //為第i個(gè)字符編碼分配空間 strcpy(HC[i],&cd[start]);

 //從 cd 復(fù)制編碼(串)到 HC } free(cd);

 //釋放空間 } void main() { HuffmanTree HT; HuffmanCode HC; int *w,n,i;

 printf("請(qǐng)輸入權(quán)值得個(gè)數(shù)():

 "); scanf ("%d",&n); w=(int *)malloc(n*sizeof(int)); printf("請(qǐng)依次輸入%d 個(gè)權(quán)值(整型):\n",n); for(i=0;i<=n-1;i++)

 scanf ("%d",w+i); HuffmanCoding(HT,HC,w,n); for(i=1;i<=n;i++){ printf("對(duì)應(yīng)得編碼為:"); puts(HC[i]);} }

推薦訪問: 實(shí)驗(yàn) 報(bào)告 哈夫曼樹

【哈夫曼樹實(shí)驗(yàn)報(bào)告,(2)】相關(guān)推薦

工作總結(jié)最新推薦

NEW
  • 同志們:今天這個(gè)大會(huì),是市委全面落實(shí)黨要管黨、從嚴(yán)治黨要求的一項(xiàng)重大舉措,也是對(duì)縣市區(qū)委書記履行基層黨建工作第一責(zé)任人情況的一次集中檢閱,同時(shí)是對(duì)全市基層黨建工作的一次再部署、再落實(shí)的會(huì)議。前面,**

  • ***年,我認(rèn)真履行領(lǐng)班子、帶隊(duì)伍、抓黨員、保穩(wěn)定的基層黨建工作思路,以學(xué)習(xí)貫徹習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想和黨的十九大歷次全會(huì)精神為主線,以市局基層黨建工作考核細(xì)則為落腳點(diǎn),落實(shí)全面從嚴(yán)治黨主體

  • 根據(jù)會(huì)議安排,現(xiàn)將2022年履行抓基層黨建工作職責(zé)情況報(bào)告如下:一、履職工作特色和亮點(diǎn)1 突出政治建設(shè),著力在思想認(rèn)識(shí)上提高。牢固樹立抓黨建就是抓政績(jī)的理念,以“黨建工作抓引領(lǐng)、社區(qū)治理求突破,為民服

  • 2022年以來,在**黨委的正確領(lǐng)導(dǎo)下,堅(jiān)持以習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想為指導(dǎo),深入學(xué)習(xí)宣傳貫徹黨的二十大精神,以黨建工作為統(tǒng)領(lǐng),扎實(shí)開展夯實(shí)“三個(gè)基本”活動(dòng),以“四化四力”行動(dòng)為抓手,聚力創(chuàng)建

  • 各位領(lǐng)導(dǎo),同志們:根據(jù)會(huì)議安排,現(xiàn)就2022年度抓基層黨建工作情況匯報(bào)如下:一、主要做法及成效(一)強(qiáng)化政治引領(lǐng)。一是不斷強(qiáng)化理論武裝。堅(jiān)持通過黨組會(huì)、中心組學(xué)習(xí)會(huì)和“三會(huì)一課”,第一時(shí)間、第一議題學(xué)

  • 2022年度抓基層黨建工作述職報(bào)告按照黨委工作部署,現(xiàn)將本人2022年度抓基層黨建工作情況報(bào)告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發(fā)展首要位置,積極開展

  • 2022年,是我在數(shù)計(jì)系黨總支書記這個(gè)新崗位上度過的第一個(gè)完整的工作年度。回首一年來在校黨委的正確領(lǐng)導(dǎo)下,與數(shù)計(jì)系領(lǐng)導(dǎo)班子和全體師生共同走過的日子,艱辛歷歷在目,收獲溫潤(rùn)心田。作為黨總支書記,我始終牢

  • 按照考核要求,現(xiàn)將本人一年來,作為統(tǒng)戰(zhàn)部長(zhǎng)履行職責(zé)、廉潔自律等方面情況報(bào)告如下:一、著眼增強(qiáng)政治素質(zhì),不斷深化理論學(xué)習(xí)堅(jiān)持把旗幟鮮明講政治作為履職從政的第一位要求,帶領(lǐng)統(tǒng)戰(zhàn)系統(tǒng)干部堅(jiān)決擁護(hù)“兩個(gè)確立”

  • **年,緊緊圍繞黨工委、管委會(huì)的決策部署,全體人員團(tuán)結(jié)協(xié)作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進(jìn)取,認(rèn)真履職盡責(zé),圓滿完成各項(xiàng)工作任務(wù)。一、個(gè)人思想政治狀況檸檬文苑www bgzjy

  • 按照縣委關(guān)于開展抓基層黨建述職評(píng)議會(huì)議的有關(guān)要求,經(jīng)請(qǐng)示縣委組織部同意,今天,我們?cè)诖苏匍_2022年度基層黨組織書記抓基層黨建述職評(píng)議會(huì)議。1 首先,請(qǐng)**黨委書記,**同志述職。**黨委能夠主動(dòng)研究