#include #include #define N 255 #define M 2*N - 1 char file[20] = " />

麻花豆传媒剧国,亚洲国产精品无码,欧州黄片视频免费观看,外国性生活一区二区

車載MP3 經(jīng)常歌放一半就沒了,需要拔插SD卡

提問者: kuangye2009 2014-11-02 00:00

最佳答案

#include #include #include #define N 255 #define M 2*N - 1 char file[20] = "1.txt"; typedef struct { int data; /* 字符值 */ int weight; /* 權(quán)重 */ int parent; /* 雙親結(jié)點(diǎn) */ int lchild; /* 左孩子結(jié)點(diǎn) */ int rchild; /* 右孩子結(jié)點(diǎn) */ }Tree; typedef struct { char cd[N]; int start; }Code; Tree ht[M]; Code hcd[N]; int cmp(const void*, const void*); int NumberOfChar(); void Reset(); void InputFile(); void Encode(int); void Decode(int); void OutputFile(int); void PrintHuffmanCode(int); void CreateHT(int); void CreateHCode(int); int main() { int x = 0; int n = 0; char ch; Reset(); InputFile(); /* 排序使得有效字符在前面 */ qsort(ht, N, sizeof(Tree), cmp); /* 記下有效字符的個(gè)數(shù) */ n = NumberOfChar(); CreateHT(n); CreateHCode(n); OutputFile(n); PrintHuffmanCode(n); Encode(n); Decode(n); getchar(); return 0; } int cmp(const void *a ,const void *b) { return (*(Tree *)a).weight < (*(Tree *)b).weight ? 1 : -1; } int NumberOfChar() { int i, num = 0; for (i = 0; i < N; i++) { if (ht[i].weight > 0) num++; } return num; } void Reset() { int i; for (i = 0; i < M; i++) { ht[i].weight = 0; ht[i].parent = -1; ht[i].lchild = -1; ht[i].rchild = -1; } } void InputFile() { FILE *fp; char ch; system("cls"); fp = fopen(file, "rt"); /* 讀入字符并處理權(quán)重 */ while (fscanf(fp, "%c", &ch) != EOF) { ht[ch].data = ch; ht[ch].weight++; } fclose(fp); printf("原文件 %s 讀入成功!
", file); } void Encode(int n) { int i, k; char ch; FILE *fp1, *fp2; fp1 = fopen(file, "rt"); fp2 = fopen("Encode.txt", "wt+"); /* 一個(gè)字符一個(gè)字符替換 */ while (fscanf(fp1, "%c", &ch) != EOF) { for (i = 0; i < n; i++) { if (ht[i].data == ch) { for (k = hcd[i].start; k <= n; k++) { fprintf(fp2, "%c", hcd[i].cd[k]); } } } } fclose(fp1); fclose(fp2); printf("編碼成功,結(jié)果在 Encode.txt 中!
"); } void Decode(int n) { int i, k; char ch; FILE *fp1, *fp2; fp1 = fopen("Encode.txt", "rt"); fp2 = fopen("Decode.txt", "wt+"); i = 2 * n - 2; while (fscanf(fp1, "%c", &ch) != EOF) { if (ch == '0') i = ht[i].lchild; else i = ht[i].rchild; /* 找到葉子節(jié)點(diǎn)為止 */ if (ht[i].lchild == -1) { fprintf(fp2, "%c", ht[i].data); /* 繼續(xù)從根節(jié)點(diǎn)開始查找 */ i = 2 * n - 2; } } fclose(fp1); fclose(fp2); printf("解碼成功,結(jié)果在 Decode.txt 中!
"); } void OutputFile(int n) { FILE *fp; int i, k; fp = fopen("Huffman_Code.txt", "wt+"); for (i = 0; i < n; i++) { fprintf(fp, "%d ", ht[i].data); for (k = hcd[i].start; k <= n; k++) { fprintf(fp, "%c", hcd[i].cd[k]); } if (i < n - 1) fprintf(fp, "
"); } fclose(fp); printf("代碼表文件 Huffman_Code.txt 生成成功!
"); } void PrintHuffmanCode(int n) { int i, k; printf("ASCII \t Char \t HuffmanCode
"); for (i = 0; i < n; i++) { printf("%d \t \"%c\" \t ", ht[i].data, ht[i].data); for (k = hcd[i].start; k <= n; k++) { printf("%c", hcd[i].cd[k]); } printf("
"); } } void CreateHT(int n) { int i, k ,lmin, rmin; int min1, min2; /* 一共有2n-1個(gè)節(jié)點(diǎn) */ for (i = n; i < 2 * n - 1; i++) { /*lmin和rmin為最小權(quán)重的兩個(gè)節(jié)點(diǎn)置*/ min1 = min2 = 0x7FFFFFFF; lmin = rmin = -1; for (k = 0; k <= i - 1; k++) { /*只在尚未構(gòu)造二叉樹的節(jié)點(diǎn)中查找*/ if (ht[k].parent == -1) { if (ht[k].weight < min1) { min2 = min1; rmin = lmin; min1 = ht[k].weight; lmin = k; } else if (ht[k].weight < min2) { min2 = ht[k].weight; rmin = k; } } } /* 修改2個(gè)小權(quán)重節(jié)點(diǎn)的雙親 */ ht[lmin].parent = i; ht[rmin].parent = i; /* 修改雙親的權(quán)重 */ ht[i].weight = ht[lmin].weight + ht[rmin].weight; /* 修改雙親的孩子 */ ht[i].lchild = lmin; ht[i].rchild = rmin; } } void CreateHCode(int n) { int i, f, c; Code hc; for (i = 0; i < n; i++) { hc.start = n; c = i; f = ht[i].parent; /* 循序直到樹根結(jié)點(diǎn) */ while (f != -1) { /* 處理左孩子結(jié)點(diǎn) */ if (ht[f].lchild == c) hc.cd[hc.start--] = '0'; /* 處理右孩子結(jié)點(diǎn) */ else hc.cd[hc.start--] = '1'; c = f; f = ht[f].parent; } /* start指向哈夫曼編碼最開始字符 */ hc.start++; hcd[i] = hc; } }

回答者:mrp672016-11-02 00:00

相關(guān)問題

  • 車載MP3的用法

    1、你的車要發(fā)動(dòng)起來 2、你要打開收音機(jī),對(duì)準(zhǔn)頻率,如果收音機(jī)在87.9上有干擾,可以退后幾個(gè)頻率 3、歌曲可能格式不對(duì),或者解碼率達(dá)不到要求 4、歌曲的播放速度支持不了 車載支持的MP3速率是 32—320之間的

    提問者: asdaa543fdgd 2013-03-28

  • 建伍車載CD機(jī)KDC-MP5036U怎樣接USB存儲(chǔ)設(shè)備(如U盤)

    如果能知道 接線柱在哪兒 何必在意選擇什么樣的線呢? 找一個(gè)好點(diǎn)兒的常用USB線改裝一下就可以了吧,關(guān)鍵是 接線的地方吧。。。 LJCC 網(wǎng)購(gòu)評(píng)價(jià): —— 車載專用 迷你usb口 U盤 專門給車內(nèi)設(shè)有外接音源

    提問者:jcfq73782013-11-06

  • 汽車收音機(jī)線怎么接(有接線圖

    1#接棕+ 2#接灰+ 3#接(你發(fā)圖準(zhǔn)確 情況下)紅黃(兩根接 一起火) 4#接棕- 5#接灰- 6#接 黑(地) 7# 不 接(后買的 機(jī)器面板燈和火線內(nèi)連在 一起) 下圖音頻紅 和 白接

    提問者: oddmig 2013-06-09

  • 車載充電器車的原理

    就是個(gè)轉(zhuǎn)換接頭,內(nèi)部加了個(gè)穩(wěn)壓和電源指示。 因?yàn)辄c(diǎn)煙器輸出本身就是5V的

    提問者:craftfox2013-05-09

  • 手機(jī)充電器內(nèi)部構(gòu)造

    一、充電器 充電器是給電池補(bǔ)充電能的裝置,一般分二階段充電模式與三階段充電模式兩種。二階段充電模式:先恒壓充電,充電電流隨電池電壓的上升逐漸減小,等電池電量補(bǔ)充到一定程度以后,電池電壓會(huì)上升到充電器的設(shè)定值,此時(shí)轉(zhuǎn)換為涓

    提問者: zy04060 2013-03-08

  • 車載GPS監(jiān)控中心的構(gòu)造是怎樣的?包括:數(shù)據(jù)、通訊、GIS服務(wù)器的具體設(shè)置,監(jiān)控綜合平臺(tái)需安裝設(shè)置的具體內(nèi)容有哪些?

    GPS在汽車導(dǎo)航和交通管理中的應(yīng)用三維導(dǎo)航是GPS的首要功能,飛機(jī)、輪船、地面車輛以及步行者都可以利用GPS導(dǎo)航器進(jìn)行導(dǎo)航。汽車導(dǎo)航系統(tǒng)是在全球定位系統(tǒng)GPS基礎(chǔ)上發(fā)展起來的一門新型技術(shù)。汽車導(dǎo)航系統(tǒng)由GPS導(dǎo)航、自律導(dǎo)

    提問者: czl129 2013-06-02

按字母分類: