91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 90KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-12-01
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

霍夫曼編碼及香農(nóng)編碼:信源編碼主要可分為無失真信源編碼和限失真信源編碼。無失真信源編碼主要適用于離散信源或數(shù)字信號(hào),如文本、表格及工程圖紙等信源,它們要求進(jìn)行無失真地?cái)?shù)據(jù)壓縮,要求完全能夠無失真地可逆恢復(fù)。凡是能載荷一定的信息量,且碼字的平均長度最短,可分離的變長碼的碼字集合稱為最佳變長碼,為此必須將概率大的信息符號(hào)編以短的碼字,概率小的符號(hào)編以長的碼字,是的平均碼字長度最短,能得到最佳的編碼方法主要有:香農(nóng),費(fèi)諾,霍夫曼編碼等,實(shí)現(xiàn)至少兩種無失真信源編碼(香農(nóng)碼,哈夫曼碼、費(fèi)諾碼)及其編碼效率。

資源截圖

代碼片段和文件信息

#include??
#include?
#include
#include?
#define?MAXLEN?100?
typedef?struct?Huffmantree?{?
char?ch;?/*鍵值*/?
int?weightmarkhu;/*weight為權(quán)值mark為標(biāo)志域*/?
struct?Huffmantree?*parent*lchild*rchild*next;?
}Hftree*linktree;?
int?sum=0;?
float?k=0.0;
double?r?H=0.0;;
linktree?tidycharacter(char?character[])?
{?
int?i=0;?
?
for(i=0;character[i]!=‘\0‘&&character[i]!=‘\n‘;i++)?{?/*遍歷直到字符串結(jié)束為止*/?
sum++;}
?
linktree?treeptrbeforeptrnode;?/*鏈?zhǔn)?tree為頭結(jié)點(diǎn)beforeptr為ptr的前一結(jié)點(diǎn)node為新申請(qǐng)的結(jié)點(diǎn)*/?
tree=(linktree)malloc(sizeof(Hftree));/*創(chuàng)建單鏈表的頭結(jié)點(diǎn)*/?
if(!tree)return?NULL;?
tree->next=NULL;?/*?頭結(jié)點(diǎn)為空且后續(xù)結(jié)點(diǎn)為空*/?
for(i=0;character[i]!=‘\0‘&&character[i]!=‘\n‘;i++)?{?/*遍歷直到字符串結(jié)束為止*/?
ptr=tree;?
beforeptr=tree;?
node=(linktree)malloc(sizeof(Hftree));?/*新申請(qǐng)結(jié)點(diǎn)node*/?
if(!node)return?NULL;?
node->next=NULL;?
node->parent=NULL;?
node->lchild=NULL;?
node->rchild=NULL;?/*置空*/?
node->mark=0;?
node->ch=character[i];?
node->weight=1;
node->hu=0;?
if(tree->next==NULL)?
tree->next=node;?/*頭結(jié)點(diǎn)的下一結(jié)點(diǎn)為空連接node*/?
else?{?
ptr=tree->next;?
while(ptr&&ptr->ch!=node->ch)?{/*將指針移至鏈表尾*/?
ptr=ptr->next;?
beforeptr=beforeptr->next;?/*后移*/?
}?
if(ptr&&ptr->ch==node->ch)?{/*如果鏈表中某結(jié)點(diǎn)的字符與新結(jié)點(diǎn)的字符相同*/?
/*將該結(jié)點(diǎn)的權(quán)加一*/?
ptr->weight=ptr->weight+1;?
free(node);?/*釋放node結(jié)點(diǎn)的存儲(chǔ)空間*/?
}?
else?{/*新結(jié)點(diǎn)與表中結(jié)點(diǎn)不相同將新結(jié)點(diǎn)插入鏈表后*/?
node->next=beforeptr->next;?
beforeptr->next=node;?/*node連接在beforeptr之后*/?
}?
}?
}?
return?tree;?
}?
linktree?taxisnode(linktree?tree)?/*將整理完的字符串按出現(xiàn)次數(shù)從小到大的順序排列?*/?
{?
linktree?headphptbeforeph;?/*head為新鏈表的表頭結(jié)點(diǎn)*/?
head=(linktree)malloc(sizeof(Hftree));/*創(chuàng)建新鏈表的頭結(jié)點(diǎn)*/?
if(!head)return?NULL;?
head->next=NULL;?/*新結(jié)點(diǎn)的頭結(jié)點(diǎn)為空后續(xù)結(jié)點(diǎn)也為空*/?
ph=head;?
beforeph=head;?
while(tree->next)?{?
pt=tree->next;/*取被操作鏈表的首元結(jié)點(diǎn)*/?
tree->next=pt->next;?
pt->next=NULL;?/*取出pt所指向的結(jié)點(diǎn)*/?
ph=head->next;?
beforeph=head;?
if(head->next==NULL)?
head->next=pt;/*創(chuàng)建當(dāng)前操作鏈表首元結(jié)點(diǎn)*/?
else?{?
while(ph&&ph->weightweight)?{/*將被操作結(jié)點(diǎn)插入相應(yīng)位置*/?
ph=ph->next;?
beforeph=beforeph->next;?
}?
pt->next=beforeph->next;?
beforeph->next=pt;?
}?
}?
ph=head->next;
free(tree);?

return?head;?
}??
linktree?createHftree(linktree?tree)?/*用排完序的字符串建立霍夫曼樹?*/
{?
linktree?pqnewnodebeforep;p=tree->next;?
while(p!=NULL){
??float?t=(float)p->weight/sum;
??H=-(t*log(t)/log(2))+H;
??????printf(“w[%c]出現(xiàn)的概率為:%f\n“p->cht);
??p=p->next;
}?

for(p=tree->nextq=p->next;p!=NULL&&q!=NULL;p=tree->nextq=p->next)?{?
tree->next=q->next;?
q->next=NULL;?
p->next=NULL;?
newnode=(linktree)malloc(sizeof(Hftree));/*申請(qǐng)新結(jié)點(diǎn)作為霍夫曼樹的中間結(jié)*/?
if(!newnode)return?NULL;?
newnode->next=NULL;?
newnode->mark=0;?
newnode->lchild=p;/*取鏈表頭結(jié)點(diǎn)后的兩個(gè)結(jié)點(diǎn)作為新結(jié)點(diǎn)的左、右兒子*/?
newnode->rchild=q;?
p->parent=newnode;?
q->parent=newnode;?
newnode->weight=p->weight+q->weight;?
p=tree->next;?
beforep=tree;?
if(p!=NULL&&p->weight>=newnode->weight)?{/*將新結(jié)點(diǎn)插入原鏈表的相應(yīng)位置*/?
newnode->next=beforep->next;?
beforep->next=newnode;?
}?
else?{?
while(p!=NULL&&p->weight

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????2881??2011-07-06?09:29??sd.cpp
?????文件??????199680??2011-07-04?16:22??信息論課程設(shè)計(jì).doc
?????文件????????6696??2011-07-04?16:12??jia.cpp

評(píng)論

共有 條評(píng)論

相關(guān)資源