安徽科技學院 信網學院網路文化節 曹健

2021-10-07 06:28:35 字數 2783 閱讀 7570

#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 總會找到想要的資料,然而頭部沒有變化...