[原始碼和文件分享]C語言實現huffman編解碼與壓縮文字
1 原理
哈夫曼編碼(Huffman Coding),又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼(VLC)的一種。Huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做Huffman編碼(有時也稱為霍夫曼編碼)。
在計算機資料處理中,霍夫曼編碼使用變長編碼表對源符號(如檔案中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符號出現機率的方法得到的,出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之後的字串的平均長度、期望值降低,從而達到無失真壓縮資料的目的。
例如,在英文中,e的出現機率最高,而z的出現概率則最低。當利用霍夫曼編碼對一篇英文進行壓縮時,e極有可能用一個位元來表示,而z則可能花去25個位元(不是26)。用普通的表示方法時,每個英文字母均佔用一個位元組(byte),即8個位元。二者相比,e使用了一般編碼的1/8的長度,z則使用了3倍多。倘若我們能實現對於英文中各個字母出現概率的較準確的估算,就可以大幅度提高無失真壓縮的比例。
參考文件和完整的文件和原始碼下載地址:
https://www.write-bug.com/article/1669.html
相關推薦
[原始碼和文件分享]C語言實現huffman編解碼與壓縮文字
1 原理 哈夫曼編碼(Huffman Coding),又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼(VLC)的一種。Huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做Huffman編碼(有時也稱為霍夫
[原始碼和文件分享]C語言的基於棧實現的表示式求值
一、目的 理解中綴表示式求值的過程 理解中綴轉字尾表示式求值的過程 掌握堆疊的應用 二、問題描述 綴表示式,其中包含括號,加減乘除,乘方等運算,利用中綴表示式,對錶達式分析並求值 入的中綴表示式轉換為字尾形式,顯示字尾形式,並通過後綴形
[原始碼和文件分享]C++實現的基於連結串列的通訊錄管理系統
摘 要 隨著計算機應用技術的快速發展和日益普及,網路也遍及到我們生活的每個角落,為我們的學習和工作帶來極大的方便。很多人都使用過傳統的紙質通訊錄,與之不同的另外一種管理方式——程式通訊錄管理。程式通訊錄管理系統面向全部使用者,它是一種先進、方便、快捷、簡易的方式,能快速地新增、刪除、查詢通訊錄中
[原始碼和文件分享]基於組合語言的音樂盒設計與實現
基於組合語言的音樂盒設計與實現—彙編課設 一 需求分析 設計一個音樂盒,可用在諸如生日禮品等場景裡。 包含的功能有播放音樂、切換音樂。預設播放第一首音樂,單曲迴圈。當撥動控制開關時切換歌曲,總共三首,分別由三個開關控制。當且僅當一個開關開啟其它開關關閉時有效,多個開關同時開啟時無效。
[原始碼和文件分享]基於Python實現的論壇帖子情感分析
一、課程專案 Scuinfo文字分類分析 二、專案類容 爬取川大匿名社群SCUinfo在一段時間內的帖子,對其進行情感分類分析,包括情緒分類(積極,消極),帖子內容關聯分析等。 三、個人工作完成報告 3.1 工作概述 負責資料收集、預處理以及簡單的情感分析 3.2 爬蟲方
[原始碼和文件分享]基於QT實現的約會吧社交聊天系統
1 問題陳述 約會管理系統是一個幫助人們發起並安排約會的平臺。一旦註冊成為該系統的使用者後,你就可以邀請任意的其他使用者來一場一對一的約會,從而增進感情,達成共識,贏得未來。 新使用者需要先行註冊,要求填寫使用者名稱和密碼,以及email和電話號碼。註冊成功或是老使用者,則通過使用者名稱和密
[原始碼和文件分享]基於JAVA實現的紙牌遊戲
1 專案介紹 1.1 背景和目的 單人紙牌遊戲,牌桌上有7個堆共28張牌,第一堆1張牌,第二堆2張,。。。第7堆7張,每一堆的第一張牌朝上,其他朝下。牌桌上還有4個suitpiles,一個deck card堆和一個discard card堆(參考Windows的紙牌遊戲) 設計一個簡單的
[原始碼和文件分享]基於easyx實現的黑白棋遊戲
一 需求分析 C語言課程設計,介面結合 秦時明月 中的 墨攻棋陣 ,實現該黑白棋小遊戲。 二 功能說明 遊戲包含 單人模式、雙人模式、聯機對戰、觀戰模式 等四種模式,主介面如下圖所示。 參考文件和完整的文件和原始碼下載地址: https://www.wr
[原始碼和文件分享]基於JAVA實現的基於DFA的詞法分析程式
1 實驗目的 根據自己確定的正規表示式,編寫、除錯一個詞法分析程式,對語句進行詞法分析,從而更好理解詞法分析原理。 2 內容描述 此程式用java編寫。程式讀取一個文字檔案,並對其中的內容進行詞法分析,此程式實現了對java程式簡單的詞法識別,可識別一部分保留字、識別符號、操作符,一部分
[原始碼和文件分享]基於MFC實現的AES加密解密程式
1 演算法背景及介紹 1.1 背景 高階加密標準(Advanced Encryption Standard,AES)作為傳統對稱加密演算法標準DES的替代者,由美國國家標準與技術研究所(NIST)於1997年提出徵集該演算法的公告。1999年3月22日,NIST從15個候選演算法中公佈了5個
[原始碼和文件分享]基於JAVA實現的迷宮鼠迷宮小遊戲
1 功能說明 1.1 問題描述 用JAVA實現電腦鼠走迷宮的程式,一個假想的小車能在圖示的迷宮中穿行輸出其可能的組合式。 1.2 題目要求 根據國際比賽規則,電老鼠走迷宮分為三個階段: 從起點走到終點從終點 進一步遍歷完整個迷宮,獲得整個迷宮的地圖(牆和通路)
[原始碼和文件分享]基於VC++實現的支援視訊和圖片的車牌定位與識別系統
1 引言 在建設平安城市的程序中,安全是政府日常管理工作中的重要任務。隨著城市報警和監控系統的建設,對於監控資料的分析也日顯重要。 目前需要對重點街道或路口採集的視訊資料進行分析,主要包括兩點: 對於視訊中過往機動車輛的機動車牌提取出來,生成截圖圖片; 對提取的圖片中機
[原始碼和文件分享]使用VS2013實現修改程式的資源
背景 之前寫了一個從程式中釋放自定義資源功能的小程式,既然資源可以被定位出來,並能夠獲取其資料寫入到本地檔案中。那麼,自然可以相信,我們能夠實現一個這樣的小程式,替換或者說更改其他程式中的資源。 事實上,的確是可以這麼做的。因為EXE格式的檔案是PE檔案,如果熟悉PE檔案格式,那麼就會了解P
[原始碼和文件分享]使用VS2013實現修改其他程式的圖示
背景 之前,寫了一個程式,程式中有一個功能就是獲取一個EXE程式的圖示,然後,把這個圖示更改為另一個EXE程式的圖示。在網上搜索了很久,都沒有找到相關的例子。找到的大都是修改自己程式的圖示,或者是使用一個 .ico 的圖示檔案,去更改指定程式的圖示。雖然,這些功能和自己想要開發的功能有些不同,但
[原始碼和文件分享]基於WinInet實現的HTTP檔案下載
背景 之前寫過的網路資料傳輸的小程式都是基於Socket去寫的,所以,如果要用Socket傳輸資料到網站,還需要根據域名獲取伺服器的IP地址,然後再建立連線,傳輸資料。雖然,Socket也可以實現網路傳輸,但是,總感覺不是很方便。所以,後來隨著知識面的拓展,瞭解到Windows還專門提供了Win
[原始碼和文件分享]基於WinInet實現HTTP檔案上傳
背景 之前寫過基於WinInet的HTTP檔案下載功能的小程式了,那就順便把HTTP檔案上傳也一併寫了吧,這樣知識才算是比較完整了。相對於檔案下載來說,檔案上傳過程原理也都差不多,只要注意些區別就好了。 現在,把基於WinInet的HTTP檔案上傳功能小程式的開發過程分享給大家,方便大家的參
[原始碼和文件分享]駕校資訊公告系統的設計與實現
歡迎使用Markdo隨著人們大量的汽車需求,大學畢業生走向社會,駕校資訊業務需求急劇增加。各地也把駕校資訊業務當本地濟發展的支柱之一,從而促進了駕校工作的蓬勃發展。如何在激烈的競爭中生存發展,是每個資訊部門所面臨的問題。利用先進的管理手段,提高資訊部門的管理水平,已成為駕校工作發展的當務之急。
[原始碼和文件分享]基於JAVA的WML資訊查詢與後端資訊釋出系統實現
摘 要 人類社會已進入嶄新的資訊化時代,資訊科技正以前所未有的速度發展,人們對資訊的互動需求也與日俱增。無線通訊技術以及手機終端的發展,從一定程度上滿足了人們的需求,人們隨時隨地上網已經基本實現。首先,無線通訊技術的發展使基於WAP方式的資訊瀏覽查詢存在技術前提,這也是我們系統存在的前提;其次,
[原始碼和文件分享]基於C語言實現的流星雨模擬課程設計
一、課程設計內容及要求 程式模擬一組流星飛向地面的情景。地面用多行#來表示,流星用大寫字母不表示。程式產生一組流星(比如10個),從螢幕頂部下降飛向地面。一組流星中,每個流星的字元顏色是隨機的,下降的位置是隨機的,下降的速度也是隨機的。一個流星下落只能去掉一個#號,當最後一行地面有#被去掉時,程
[原始碼和文件分享]基於C#語言的計算器的設計與實現
一 需求分析 利用c#語言實現一個計算器程式,包括普通計算器模式、科學計算器模式;實現實數(包括正數、負數、0)的加、減、乘、除、平方等基本遠算,並實現非負數的開方運算。 二 程式設計與實現 首先設計主窗體,包括兩個TextBox用來顯示資料,使用資料繫結實現,在Model中實現INot