#include
#include
#include
int weights[26] = ;
char alphabet[26] = ;
#define length 26
#define n 100
typedef struct
htnode, * huffmantree;//哈夫曼節點的型別
typedef char** huffmancodetable;//哈夫曼編碼表
void menu();//選單
void createhuffmantree(huffmantree& ht, int weights, int n);//建立哈夫曼樹
void select(huffmantree ht, int n, int& min1, int& min2);//找最小的個權重和次小的權重
void createhuffmancode(huffmantree ht, huffmancodetable& hc, int n);//huffman編碼功能
void createhuffmancoding(huffmantree ht, huffmancodetable hc, char text, char*& encode_text);//哈夫曼編碼文字
void createhuffmandecoding(huffmantree ht, huffmancodetable hc, char text2, char*& decode_text);//哈夫曼解碼
void select(huffmantree ht, int n, int& min1, int& min2)//找最小的個權重和次小的權重
//當前結點為初值
if (min1 == 0)
else
else if (ht[i].weight < ht[min2].weight)
else if (ht[i].weight > ht[min2].weight) }}
}}void createhuffmantree(huffmantree& ht, int weights, int n)
int m = 2 * n - 1;
ht = new htnode[m + 1];//第乙個空間不用
for (int i = 1; i <= m; i++)
for (int x = 1; x <= n; x++)
for (int k = n + 1; k <= m; k++) void createhuffmancode(huffmantree ht, huffmancodetable& hc, int n)
else
child = p;
p = ht[p].parent;
}hc[i] = new char[n - start];
strcpy(hc[i], &cd[start]);
}free(cd);
}void createhuffmancoding(huffmantree ht, huffmancodetable hc, char text, char*& encode_text) }
void createhuffmandecoding(huffmantree ht, huffmancodetable hc, char text2, char*& decode_text)
int decode_len = strlen(text2);
decode_text = new char[decode_len * length];//儲存編碼之後的文字
int n = 0;
int j = 0;
while (j < decode_len)
else
}decode_text[n] = 『a』 + p - 1;//找到了該字元後儲存進解碼陣列內
n++;
}decode_text[n] = 『\0』;
}void menu()
int main()
huffmantree ht;
createhuffmantree(ht, weights, length);
for (int a = 1; a <= 2 * length - 1; a++)
printf(「建立哈夫曼樹成功 「);
system(「pause」); system(「cls」);
}break;
case 2:
system(「pause」); system(「cls」); }
break;
case 3:
char* encode_text;
createhuffmancoding(ht, hct, text, encode_text);
printf(「編碼完成,文字為%s:」, encode_text);
system(「pause」); system(「cls」);
}break;
case 4:
char* decode_text;
createhuffmandecoding(ht, hct, text2, decode_text);
printf(「解碼完成,文字為%s:」, decode_text);
system(「pause」); system(「cls」);
} break;
case 5:
default:
printf(「輸入不合法,請重新輸入!」);
continue;
}if (flag == 0)
break;
}return 0;
}
安徽科技學院 信網學院網路文化節 劉洪江
import sys import time books 圖書資料 users 預設使用者資料 def menu print 40 print 歡迎來到圖書管理系統 print 40 print 請輸入你想要進行的操作 print 1 註冊新使用者 print 2.使用已註冊的賬號進行登陸 prin...
安徽科技學院 信網學院網路文化節 丁舒
程式設計 針對需求做如下設計 1 資料結構設計 假設學生學分管理程式中的資訊結構是 學號 最多11個數字 姓名 最多7個字元 班級 最多11個字元 typedef struct student 定義學生學分結構 stu 2 模組設計 本任務的主要演算法是一組對學生學分管理的的操作函式,所以 錄入學分...
安徽科技學院 信網學院網路文化節 曾偉
include p p next z addforward zhead,int data,znew1 自定義的函式,在想要編號的前面插入新的書籍資訊 while p null 若頭部不是想要插入的資料 p p next putchar n return head 總會找到想要的資料,然而頭部沒有變化...