課程設計 赫夫曼編碼

2021-08-27 06:09:50 字數 901 閱讀 6766

赫夫曼編碼能夠產生最短的報文。以報文「abcdabcdabcabdabaa」為例,a編為0,b對應10,c對應110,d對應111,整體的報文長度為35位二進位制。相比於定長的ascii碼,壓縮比達到了18*8/35=4.1。

輸入有一系列的字串組成,每個字串佔據一行。字串僅包含大寫字母和下劃線。字串「end」

表示處理結束,不應對其處理。

對每乙個字串,輸出其ascii編碼的位元位長度,赫夫曼編碼的位元位長度,以及二者之比,精確到小數點後一位。

abcdabcdabcabdabaa

aaaaaaaaaaaaaaaaaa

end144 35 4.1

144 18 8.0

我費了九牛二虎之力,最終做了出來,**如下,以作紀念:

#include #include#define n 100

#define max 1000

#define ok 1

typedef struct //huffman節點

htnode;

int createht(htnode ht,int n)//構造huffman樹的**沒有一點錯誤

{int i,k,lnode,rnode;

int min1,min2;

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

ht[i].parent=ht[i].lchild=ht[i].rchild=-1;

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

{min1=min2=32767;

lnode=rnode=-1;//lnode和rnode為最小權重的兩個節點的位置

for(k=0;k<=i-1;k++)

if(ht[k].parent==-1)//只在尚未構造二叉樹的結點中查詢

{if(ht[k].weight

課程設計表

create database drug 藥品表 create table drug did nvarchar 10 primary key,dname nvarchar 50 not null,dimage nvarchar 100 not null,dmodel nvarchar 10 chec...

課程設計總結

課程設計今天終於完了,答辯之後感悟挺多的,一方面,覺得自己的努力獲到了應有的成果,當然也有很多不足及未完成的地方 另一方面,看到很多其他同學好的設計及思想。覺得很多方面都值得自己學習,自己還有很多方面都很欠缺,本次課程設計我和兩個同學共三個人做了聊天程式,仿qq做的。聊天軟體,是我之前一直想完成的乙...

課程設計備份

include include include include define size 100 define increase 10 struct nodel 順序表 typedef struct tree btree,bnode 二叉樹struct stackt 棧int caidan int i...