- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构上机实树和二叉树的应用_哈夫曼编码设计 (含代码和报告)
数据结构实验报告
题目:数据结构实验报告
学院:工商管理学院
班级:信息1001
姓名:彭振宇
学号:座机电话号码
时间:2012/6/26实验三:树和二叉树的应用
实验题目:树和二叉树的应用
实验内容:哈夫曼编码设计
三.实验目的:掌握树和二叉树的概念及工作原理,运用其原理及概念完成上述实验题中的内容。
四.实验要求:为了使学生更好的掌握与理解课堂上老师所讲的概念与原理,实验前每个学生要认真预习所做的实验内容及编写源程序伪码(写在纸上及盘中均可)以便在实验课中完成老师所布置的实验内容。
五.概要设计原理:
1.选择parent为0且weight最小的两个结点。其序号分别为s1和s2
2.建立赫夫曼树叶
3.从叶子到根逆向求每个字符的赫夫曼编码
4.输出构造的树
5.输出得到的各权Huffman编码
六.详细程序清单及注释说明:
#include
#include
#include
#define MAXSIZE 30 //最大叶子数
#define MAXCODE 10000 //编码最大长度
#define OK 1
#define ERROR 0
#define OVERLOW -2
// 赫夫曼树和赫夫曼编码的存储表示 typedef struct unsigned int weight; unsigned int parent, lchild, rchild;
HTNode,*HuffmanTree; //动态分配数组存储赫夫曼树
typedef char **HuffmanCode; //动态分配数组存储赫夫曼编码表
/*
void Select HuffmanTree HT, int n, int *s1, int *s2
//选择parent为0且weight最小的两个结点。其序号分别为s1和s2 int minsum 1000000; int i,j; for i 1; i n; i++ if HT[i].parent continue; for j i+1; j n; j++ if HT[j].parent continue; if HT[i].weight + HT[j].weight minsum minsum HT[i].weight + HT[j].weight; *s1 i; *s2 j; void CreateHuffmanTree HuffmanTree HT, int *w, int n
//建立赫夫曼树叶 int m, s1, s2, i; if n 1 return; m 2*n-1; HT HuffmanTree malloc m+1 * sizeof HTNode ; for i 1; i n; i++, ++w HT[i].weight *w; HT[i].parent 0;
HT[i].lchild 0;
HT[i].rchild 0; for ;i m; ++i HT[i].weight 0;
HT[i].parent 0;
HT[i].lchild 0;
HT[i].rchild 0; for i n+1; i m; i++ //在HT[1.i-1]选择parent为0且weight最小的两个结点,其序号分别为s1和s2 Select HT, i-1, s1, s2 ; HT[i].weight HT[s1].weight + HT[s2].weight; HT[i].lchild s1; HT[i].rchild s2; HT[s1].parent i;
HT[s2].parent i; void HuffmanCoding HuffmanTree HT,HuffmanCode HC,int n
//从叶子到根逆向求每个字符的赫夫曼编码
int start, f;
unsigned int c; int i 1; char *cd; cd char * malloc n * sizeof char ; //分配n个字符编码的头指针向量 HC HuffmanCode malloc sizeof char * * n+1 ; cd[n-1] \0; for ; i n; ++i start n-1; //初始化编码起始指针 c i; f HT[i].parent; for ; f; f HT[f].parent if HT[f].lchild c cd[--start] 0; else cd[--start] 1; c f
您可能关注的文档
最近下载
- 人工智能赋能中学化学教学的探索.pptx VIP
- 人教版地理七年级下册第七章第三节《印度》教学课件.pdf VIP
- 日本语:大家的日语(中级1)习题答案.pdf
- 文物建筑勘查设计取费标准2020年版(试行).pdf
- QC T 29092-92 汽车用暖风电动机技术条件.docx VIP
- 2025年重庆医药行业分析报告及未来五到十年行业发展趋势报告.docx
- 2023江苏农林职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析.docx
- 《数理统计学(第2版)》习题答案及解题步骤.docx VIP
- 高耗能落后机电设备(产品)淘汰目录(第一二三四批)-全.pdf VIP
- 化学品安全技术说明书--氯气.docx VIP
文档评论(0)