實(shí)現(xiàn)最優(yōu)二叉樹的構(gòu)造;在此基礎(chǔ)上完成哈夫曼編碼器與譯碼器。 假設(shè)報(bào)文中只會(huì)出現(xiàn)如下表所示的字符:
字符 A B C D E F G H I J K L M N
頻度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 57
字符 O P Q R S T U V W X Y Z , .
頻度 63 15 1 48 51 80 23 8 18 1 16 1 6 2
要求完成的系統(tǒng)應(yīng)具備如下的功能:
1.初始化。從終端(文件)讀入字符集的數(shù)據(jù)信息,。建立哈夫曼樹。
2.編碼:利用已建好的哈夫曼樹對(duì)明文文件進(jìn)行編碼,并存入目標(biāo)文件(哈夫曼碼文件)。
3.譯碼:利用已建好的哈夫曼樹對(duì)目標(biāo)文件(哈夫曼碼文件)進(jìn)行編碼,并存入指定的明文文件。
4.輸出哈夫曼編碼文件:輸出每一個(gè)字符的哈夫曼編碼。
OpenGL中的各種轉(zhuǎn)換是通過矩陣運(yùn)算實(shí)現(xiàn)的,具體的說,就是當(dāng)發(fā)出一個(gè)轉(zhuǎn)換命令時(shí),該命令會(huì)生成一個(gè)4X4階的轉(zhuǎn)換矩陣(OpenGL中的物體坐標(biāo)一律采用齊次坐標(biāo),即(x, y, z, w),故所有變換矩陣都采用4X4矩陣),當(dāng)前矩陣與這個(gè)轉(zhuǎn)換矩陣相乘,從而生成新的當(dāng)前矩陣。例如,對(duì)于頂點(diǎn)坐標(biāo)v ,轉(zhuǎn)換命令通常在頂點(diǎn)坐標(biāo)命令之前發(fā)出,若當(dāng)前矩陣為C,轉(zhuǎn)換命令構(gòu)成的矩陣為M,則發(fā)出轉(zhuǎn)換命令后,生成的新的當(dāng)前矩陣為CM,這個(gè)矩陣再乘以頂點(diǎn)坐標(biāo)v,從而構(gòu)成新的頂點(diǎn)坐標(biāo)CMv。上述過程說明,程序中繪制頂點(diǎn)前的最后一個(gè)變換命令最先作用于頂點(diǎn)之上。這同時(shí)也說明,OpenGL編程中,實(shí)際的變換順序與指定的順序是相反的。文檔對(duì)其進(jìn)行了詳細(xì)的分析。