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

哈夫曼樹實驗報告,(2)

| 瀏覽次數:

 實驗報告 實驗名稱

 Huffman 編碼

  專業班級

 計科三班

  姓名

  學號

  指導教師

 日期

 2014、12、20

 一、實驗目得

  熟練掌握二叉樹應用(Huffman 編碼)得基本算法實現。

 二、實驗內容

 ? 1.對輸入得一串電文字符實現Huffman編碼,再對 Huffman 編碼生成得代碼串進行譯碼,輸出電文字符串。實現功能如下:

 ? Huffman 樹得建立 ? Huffman編碼得生成 編碼文件得譯碼 三、實驗要求

 ??設計思路: 數據結構: #define n 100// 數點結子葉??#define m 2*n-1 // Huffman 樹中結點總數 typedef struct {

 ;thgiew tni? //權值

 針指親雙及子孩右左//

 ;tnerap , dlihcr

 , dlihcl tni?}HTNode;

  //樹中結點類型 typedef HTNode HuffmanTree[m+1]; 0// 用不元單號?主要實現函數: ? 統計字符串中字符得種類以及各類字符得個數得函數 ? 構造 Huffman 樹得函數 ? Huffman 編碼得函數 ? 建立正文得編碼文件得函數 ? 代碼文件得譯碼函數 ? 主函數 四、實驗概要設計

 1)功能框圖

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

 五、

 使用說明

 1、運行環境:VC++ 6、0

  2、首先選擇主控菜單中得操作1,即建表,然后進行其它操作. 六 .實驗截圖

  七

 實驗體會

 1、構建哈夫曼樹得關鍵在于找最小樹;在 F 中選擇兩棵根結點權值最小得樹作為左右子樹構造一棵新得二叉樹,且至新得二叉樹得根結點得權值為其左右子樹上根結點得權值之與。

 2、由于學習得不足沒有實現編碼文件得譯碼,今后會加以改進 (╯﹏╰)

 3、在逆向求編碼得 for循環里犯了一個邏輯錯誤導致求出來得 3、4位編碼串行,嘗試了多鐘數據輸入才找到原因所在,并加以改正,編寫程序需一步一步得去調試并找到錯誤所在。

 附源程序: :

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

 {

  char data;

 //結點字符

 int

 weight;

 //結點權值

 int parent,lchild,rchild;

  //父子結點

 }HTNode,* HuffmanTree; 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 個字符得權值,構造赫夫曼樹 HT,并求出n個字符得赫夫曼樹編碼 HC int f;

 int m,i,s1,s2; int c; HuffmanTree 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最小得兩個節點,其序號分別為 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; } //****從葉子到根逆向求每個字符得赫夫曼編碼**** HC=(HuffmanCode)malloc((n+1)*sizeof(char*));//分配n個字符編碼得頭指針向量 cd=(char*)malloc(n*sizeof(char));

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

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

  //逐個字符求赫夫曼樹編碼 {

  int start;

 start=n-1;

  //編碼結束符位置 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個字符編碼分配空間 strcpy(HC[i],&cd[start]);

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

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

 printf("請輸入權值得個數():

 "); scanf ("%d",&n); w=(int *)malloc(n*sizeof(int)); printf("請依次輸入%d 個權值(整型):\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("對應得編碼為:"); puts(HC[i]);} }

推薦訪問: 實驗 報告 哈夫曼樹

【哈夫曼樹實驗報告,(2)】相關推薦

工作總結最新推薦

NEW
  • 同志們:今天這個大會,是市委全面落實黨要管黨、從嚴治黨要求的一項重大舉措,也是對縣市區委書記履行基層黨建工作第一責任人情況的一次集中檢閱,同時是對全市基層黨建工作的一次再部署、再落實的會議。前面,**

  • ***年,我認真履行領班子、帶隊伍、抓黨員、保穩定的基層黨建工作思路,以學習貫徹習近平新時代中國特色社會主義思想和黨的十九大歷次全會精神為主線,以市局基層黨建工作考核細則為落腳點,落實全面從嚴治黨主體

  • 根據會議安排,現將2022年履行抓基層黨建工作職責情況報告如下:一、履職工作特色和亮點1 突出政治建設,著力在思想認識上提高。牢固樹立抓黨建就是抓政績的理念,以“黨建工作抓引領、社區治理求突破,為民服

  • 2022年以來,在**黨委的正確領導下,堅持以習近平新時代中國特色社會主義思想為指導,深入學習宣傳貫徹黨的二十大精神,以黨建工作為統領,扎實開展夯實“三個基本”活動,以“四化四力”行動為抓手,聚力創建

  • 各位領導,同志們:根據會議安排,現就2022年度抓基層黨建工作情況匯報如下:一、主要做法及成效(一)強化政治引領。一是不斷強化理論武裝。堅持通過黨組會、中心組學習會和“三會一課”,第一時間、第一議題學

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

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

  • 按照考核要求,現將本人一年來,作為統戰部長履行職責、廉潔自律等方面情況報告如下:一、著眼增強政治素質,不斷深化理論學習堅持把旗幟鮮明講政治作為履職從政的第一位要求,帶領統戰系統干部堅決擁護“兩個確立”

  • **年,緊緊圍繞黨工委、管委會的決策部署,全體人員團結協作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進取,認真履職盡責,圓滿完成各項工作任務。一、個人思想政治狀況檸檬文苑www bgzjy

  • 按照縣委關于開展抓基層黨建述職評議會議的有關要求,經請示縣委組織部同意,今天,我們在此召開2022年度基層黨組織書記抓基層黨建述職評議會議。1 首先,請**黨委書記,**同志述職。**黨委能夠主動研究