<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 計算機畢業論文-動態哈夫曼編碼的改進

    時間:2024-08-23 14:20:57 計算機畢業論文 我要投稿
    • 相關推薦

    計算機畢業論文-動態哈夫曼編碼的改進

    計算機世界月刊》1994年7月號所登載的《動態哈夫曼編碼的數據壓縮方法》一文給出了一種實時性較強的數據壓縮方法,該方法的最大特點是不需預先對原始數據進行一遍掃描以建立哈夫曼樹,而改為以動態變化的哈夫曼樹對數據編碼。
    該文所附的動態哈夫曼編碼數據壓縮與解壓源程序中的UpDate函數是動態修改哈夫曼樹的關鍵部分,該函數對動態哈夫曼樹的一種可能情況無法正確修改,針對這一點,本文附上對該函數的一個修正定義,以使該壓縮與解壓程序更加完善。
    以下就舉例說明原UpDate函數無法正確修改的一種哈夫曼樹。例如若要壓縮“TThhis”字符串,則在壓縮完“TTh”之后的動態哈夫曼樹為圖所示(設根結點序號為1000):
    @@04A07700.GIF;圖 壓縮完“TTh”之后的動態哈夫曼樹@@
    此時若再將字符h進行壓縮編碼,則在輸出h的編碼“01”后需調整哈夫曼樹,以997號葉結點為當前結點,則與當前結點具有同樣重量的且序號最大的結點為998號結點,而該結點是997號結點的父結點,對二者按原文所提供的UpDate函數進行交換,則將導致998號結點變成葉結點,996號結點變成997號結點的左孩子,997號結點則既為自己的父結點又是自己的右孩子,這樣在對后繼字符i進行壓縮編碼時,首先就無法輸出996號空結點的編碼了,此時壓縮程序陷入死循環。
    顯然這時可以簡單地將998和997號結點的重量加1,然后以998號結點的父結點為當前結點進行調整,根據這種思想對原文提供的UpDate函數進行修正所得新的UpDate函數附后。
    void UpDate(struct Node *Temp)
    {
    struct Node * Tempa, * Tempc, * Pointer;
    struct LeafNode *p,*q,*b;
    unsigned char Letter;
    while(Temp!=Root)
    {
    if(Temp->Weight)
    {
    P=Weight;
    while(p->Next->CharNode->Weight !=Temp->Weight)
    p=p->Next;
    if(Temp->Front!=NULL)
    {
    Tempa=Temp;
    while(Temp->Front !=NULL)
    Temp=Temp->Front;
    if(Temp==Tempa->Parent)
    {
    Tempa->Weight++;
    Tempa->After=Tempa->Front=NULL;
    Temp->After=NULL;
    InsertWeight(Tempa);
    }
    else
    {
    Pointer=Temp->LeftChild;
    if(Pointer !=NULL)
    Pointer->Parent=Tempa;
    Temp->LeftChild=Tempa->LeftChild;
    if(Temp->LeftChild !=NULL)
    Temp->LeftChild->Parent=Temp;
    Tempa->LeftChild=Pointer;
    Pointer=Temp->RightChild;
    if(Pointer !=NULL)
    Pointer->Parent=Tempa;
    Temp->RightChild=Tempa->RightChild;
    if(Temp->RightChild !=NULL)
    Temp->RightChild->Parent=Temp;
    Tempa->RightChild=Pointer;
    Letter=Temp->Letter;
    Temp->Letter=Tempa->Letter;
    Tempa->Letter=Letter;
    if((Tempa->LeftChild==NULL)&&(Tempa->RightChild==NULL)
    {
    b=leaf;
    while(b!=NULL)
    {
    if(b->CharNode==Temp)
    {
    b->CharNode=Tempa;
    break;
    }
    else b=b->Next;
    }
    }
    if((Temp->LeftChild==NULL)&&(Temp->RightChild++NULL))
    {
    b=Leaf;
    while(b!=NULL)
    {
    if(b->CharNode==Tempa)
    {
    b->CharNode=Temp;
    break;
    }
    else b=b->Next;
    }
    }
    }
    }
    p->Next->CharNode=Temp->After;
    if(Temp->After==NULL)
    {
    q=p->Next;
    p->Next=q->Next;
    free(q);
    }
    else Temp->After->Front=NULL;
    }
    Temp->Weight++;
    Temp->After=Temp->Front=NULL;
    InsertWeight(Temp);
    Temp=Temp->Parent;
    }
    }
     

    【計算機畢業論文-動態哈夫曼編碼的改進】相關文章:

    動態哈夫曼編碼的改進03-18

    漢字的動態編碼與顯示方案03-18

    針對硬件實現的H.264視頻編碼算法改進03-18

    2.4Kbps MELP低速率語音編碼技術研究與改進03-30

    Tunstall編碼與自適應編碼算法03-07

    計算機畢業論文03-26

    計算機的畢業論文06-24

    計算機畢業論文05-17

    計算機畢業論文-計算機漫話12-02

    主站蜘蛛池模板: 合区精品中文字幕| 久久夜色精品国产欧美乱| 久久精品无码专区免费东京热| 亚洲精品成人av在线| 亚洲国产精品久久电影欧美| 四虎国产精品永久地址51| 无码精品A∨在线观看中文| 精品熟女少妇aⅴ免费久久| 99视频在线观看精品| 亚洲日韩国产精品第一页一区| 麻豆精品视频在线观看| 国产亚洲精品资源在线26u| 久久久亚洲精品蜜桃臀| 日韩精品成人一区二区三区| 午夜DY888国产精品影院| 国产成人高清精品免费观看| 亚洲精品制服丝袜四区| 久久91这里精品国产2020| 免费精品一区二区三区第35| 国内精品手机在线观看视频| 亚洲精品WWW久久久久久| 成人精品一区二区三区电影黑人 | 麻豆国产在线精品国偷产拍| 免费视频成人国产精品网站| 国产精品青草久久久久福利99 | 人妻少妇精品久久| 国产精品一香蕉国产线看观看 | 国产一级精品高清一级毛片| 久久国产精品久久精品国产| 99精品热这里只有精品| 国产精品偷伦视频观看免费| 精品视频一区二区三三区四区| 小辣椒福利视频精品导航| 亚洲精品乱码久久久久久蜜桃不卡| 亚洲国产精品嫩草影院久久| 欧美激情视频精品一区二区| 欧美黑人巨大videos精品| 日韩经典精品无码一区| 欧美日韩精品一区二区三区不卡 | 精品国产AV一区二区三区 | 一本一道精品欧美中文字幕|