#include <stdio.h>
#include "HT.h"
#include<string.h>
#include <stdlib.h>
#include "Common.h"
void InitTree(HuffmanTree& T, int n)
{
T = (HuffmanNode*)malloc(sizeof(HuffmanNode) * (2 * n ));
for (int i = 1; i < (2 * n - 1); ++i) {
T[i].parent = T[i].lchild = T[i].rchild=0;
}
printf("请输入字符及其权值\n");
for (int i = 1; i <= n; ++i)
{
scanf("%c %d", &T[i].data, &T[i].weight);
getchar();
}
}
void sort(HuffmanTree T, int& lchild, int& rchild, int m)
{
int mini = OTF;
for (int i = 1; i < m; i++)
{
if (T[i].weight < mini && T[i].parent == 0) {
mini = T[i].weight;
lchild = i;
}
}
mini = OTF;
for (int i = 1; i < m; i++) {
if (T[i].weight < mini && T[i].parent == 0 && T[i].weight != T[i].lchild) {
mini = T[i].weight;
rchild = i;
}
}
}
void CreateTree(HuffmanTree& T, int n)
{
InitTree(T, n);
for (int i = n; i < 2 * n - 1; i++) {
int lchild = 0;
int rchild = 0;
sort(T, lchild, rchild, i);
T[lchild].parent = i;
T[rchild].parent = i;
T[i].lchild = lchild;
T[i].rchild = rchild;
T[i].weight = T[lchild].weight+ T[rchild].weight;
}
}
void InitCode(HuffmanTree T, HuffmanCode& C, int n)
{
C = new HuffmanCodeNode[n];
for (int i = 0; i < n; i++) {
C[i].data = T[i].data;
}
}
void creatCode(HuffmanTree T, HuffmanCode& C, int n) {
InitCode(T, C, n);
for (int i = 0; i < n; i++) {
char* cd;
cd = new char[n];
cd[n - 1] = '\0';
int end = T[i].parent;
int start = n - 1;
int nowi = i;
while (end != 0) {
start--;
if (T[end].lchild == nowi) cd[start] = '0';
else cd[start] = '1';
nowi = end;
end = T[end].parent;
}
C[i].code = new char[n - start];
strcpy(C[i].code, &cd[start]);
delete []cd;
}
}
Huffman Tree.zip
需积分: 5 10 浏览量
2023-12-23
16:48:50
上传
评论
收藏 7.19MB ZIP 举报
EO_
- 粉丝: 53
- 资源: 5
最新资源
- 筷手引流工具.apk
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈