欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)據(jù)結(jié)構(gòu)__課程設(shè)計之哈夫曼編碼

      時間:2019-05-12 06:41:41下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《數(shù)據(jù)結(jié)構(gòu)__課程設(shè)計之哈夫曼編碼》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《數(shù)據(jù)結(jié)構(gòu)__課程設(shè)計之哈夫曼編碼》。

      第一篇:數(shù)據(jù)結(jié)構(gòu)__課程設(shè)計之哈夫曼編碼

      哈夫曼編碼與解碼的實現(xiàn)

      一、設(shè)計思想

      (一)哈夫曼樹的設(shè)計思想

      對于一組具有確定權(quán)值的葉子結(jié)點可以構(gòu)造出多個具有不同帶權(quán)路徑長度的二叉樹,其中具有最小帶權(quán)路徑長度的二叉樹稱作哈夫曼樹或最優(yōu)二叉樹。

      首先給定n個權(quán)值制造n個只含根結(jié)點的二叉樹,得到一個二叉樹林;再在這二叉樹林里面找根結(jié)點的權(quán)值最小和次小的兩棵樹作成新的二叉樹,其中新的二叉樹的根結(jié)點的權(quán)值為左右子根結(jié)點權(quán)值之和;最后在二叉樹林中把組合過的二叉樹刪除,再重復(fù)第二步,直到最后就剩一顆二叉樹的時候得到的這棵二叉樹就是哈夫曼樹。

      (二)哈夫曼編碼與解碼的設(shè)計思想

      在數(shù)據(jù)通訊中,經(jīng)常要將傳送的文字轉(zhuǎn)換為二進制字符0和1組成的二進制串,稱這個過程為編碼。與子相對的是解碼或是譯碼,就是用與編碼相同的方式將二進制串轉(zhuǎn)換稱編碼前的文字的過程稱作解碼。在這里是通過哈夫曼樹實現(xiàn)編碼與解碼的,所以稱作是哈夫曼編碼與解碼。

      首先輸入一個字符串,還有相應(yīng)的在哈夫曼樹里的權(quán)值,這樣用哈夫曼樹把字符串用二進制串代替它,這個過程要注意樹和編碼問題,其中樹的問題在上面已經(jīng)解決,主要看編碼的問題,就是根據(jù)我們輸入的字符串和權(quán)值建立相應(yīng)的樹模型,這一步完成那編碼就已經(jīng)完成了,最后打印就行了;然后就是解碼,完成編碼相應(yīng)的解碼就相對簡單了,就是先找到在編碼的時候建的那個模型樹,將編碼中的二進制串再根據(jù)權(quán)值轉(zhuǎn)換為相應(yīng)的字符串,這樣一步步解碼就行了。

      以上就是通過用哈夫曼樹進行哈夫曼編碼與解碼如何實現(xiàn)的主要設(shè)計思想。

      哈夫曼編碼與解碼的實現(xiàn)

      for(i=n+1;i<=2*n-1;i++)

      {

      s1=s2=10000;

      x1=x2=0;

      for(j=1;j<=i-1;j++)

      {

      if(myHaffTree[j].parent==0&&myHaffTree[j].weight

      {

      s2=s1;x2=x1;

      s1=myHaffTree[j].weight;x1=j;

      }

      else if(myHaffTree[j].parent==0&&myHaffTree[j].weight

      {

      s2=myHaffTree[j].weight;x2=j;

      }

      }

      myHaffTree[x1].parent=i;

      myHaffTree[x2].parent=i;

      myHaffTree[i].weight=s1+s2;

      myHaffTree[i].lchild=x1;

      myHaffTree[i].rchild=x2;

      } } void HaffmanCode(int n){ int start,c,f,i,j,k;char *cd;cd=(char *)malloc(n*sizeof(char));myHaffCode=(struct Coding *)malloc((n+1)*sizeof(struct Coding));cd[n-1]='