资源简介
任务:按给定的数据建立赫夫曼树
要求:可以建立函数输入二叉树,并输出其赫夫曼树。在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果。提供良好的菜单操作界面
代码片段和文件信息
#include
int s1 s2;
const int maxn = 101;
typedef struct{
int weight;
int leftchild rightchild parent;
}huffuman;
void select(huffuman tree[] int k);
void huffumantree(huffuman tree[] int w[] int n);
void huffumancode(huffuman tree[] int n);
int main()
{
int n;
int x;
int w[maxn];
char cha[maxn];
huffuman tree[maxn];
printf (“-----来建立一棵huffumantree吧!!!-----\n“);
while (1) {
printf (“ 1.建立哈夫曼树\n“);
printf (“ 2.输出哈夫曼树\n“);
printf (“ 3.退出\n“);
printf (“请输入选项:“);
scanf (“%d“ &x);
// printf (“x = %d\n“ x);
if (x == 1){
printf (“***开始建树操作***\n“);
printf (“请输入带编码字符个数:“);
scanf (“%d“ &n);
getchar();
printf (“开始输入字符和对应的权值:\n“);
for (int i=1; i<=n; i++) {
printf (“字符 对应的权值:\n“);
scanf (“%c%d“ &cha[i] &w[i]);
getchar();
}
huffumantree(tree w n);
}
if (x == 2) {
printf (“***开始输出操作***\n“);
huffumancode(tree n);
}
if (x == 3) {
return 0;
}
if (x != 1 && x != 2 && x!= 3)
printf (“请输入正确的选项!!!\n“);
}
return 0;
}
void select (huffuman tree[] int k)
{
int i;
for (i=1; i<=k && tree[i].parent != 0; i++);
s1 = i;
for (i=1; i<=k; i++) {
if (tree[i].weight < tree[s1].weight && tree[i].parent ==0)
s1 = i;
}
for (i=1; i<=k; i++)
if (i != s1 && tree[i].parent == 0)
break;
s2 = i;
for (i=1; i<=k; i++) {
if (i != s1 && tree[i].parent == 0)
if (tree[i].weight s2 = i;
}
}
void huffumantree(huffuman tree[] int w[] int n)
{
if (n <= 1)
return;
int i;
int m = 2 * n - 1;
for (i=1; i<=n; i++) {
tree[i].weight = w[i];
tree[i].parent = 0;
tree[i].leftchild = 0;
tree[i].rightchild = 0;
}
for (i=n+1; i<=m; i++) {
tree[i].weight = 0;
tree[i].parent = 0;
tree[i].leftchild = 0;
tree[i].rightchild = 0;
}
for (i=n+1; i<=m; i++) {
select(tree i-1);
tree[s1].parent = i;
tree[s2].parent = i;
tree[i].leftchild = s1;
tree[i].rightchild = s2;
tree[i].weight = tree[s1].weight + tree[s2].weight;
}
}
void huffumancode(huffuman tree[] int n)
{
printf (“***i***weight***parent***leftchild***rightchild***\n“);
for (int i=1; i<=2*n-1; i++) {
printf (“--%2d %6d %6d %9d %10d---\n“ i tree[i].weight
tree[i].parent tree[i].leftchild tree[i].rightchild);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-10 12:40 数据结构huffumantree课程设计\
文件 2506 2018-07-03 10:16 数据结构huffumantree课程设计\huffuman.cpp
文件 239104 2018-08-10 12:39 数据结构huffumantree课程设计\课程设计报告书.doc
- 上一篇:订票信息管理系统
- 下一篇:基于PLC的变频恒压供水的设计
相关资源
- 订票信息管理系统
- 利用顺序栈将一个非负的十进制整数
- FDMA--课程设计
- 图书管理系统web课程设计报告
- 学生宿舍水电信息管理系统 C课程设计
- DSP课程设计--基于TM320VC5402语音采集压
- 在线投票系统课程设计报告
- 三层电梯控制-EDA课程设计VHDL
- 编译原理课程设计_pl0扩展
- 微机原理课程设计共30个
- 存储管理—基本分页存储管理,带报
- 虚拟存储器(OPTFIFOLRU带三份报告,课
- 数控机床课程设计说明书
- 学生题库管理系统课程设计
- EDA课程设计——计费器
- 微机原理课程设计---密码键盘
- 数据结构课程设计,
- 八路抢答器课程设计报告
- 操作系统课程设计生产者与消费者
- 数字逻辑电路红绿灯设计
- TSP回溯法实现从武汉出发,进行34个省
- 超外差接收机课程设计
- 上海理工大学《数据结构》期末试题
- zw_wangxingse-6021953-24C04与1602LCD设计电子
- 杭电数据结构马踏棋盘实验报告
-
xm
l课程设计代码 - 高频课程设计 混频器
- 利用哈夫曼编码进行通信可以大大提
- 电力电子与电力传动课程设计
- 数字电路七彩灯课程设计报告
评论
共有 条评论