云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实验七

实验七

  • 62 次阅读
  • 3 次下载
  • 2026/1/11 5:06:05

《数据结构》课程实验

赫夫曼编码解码系统 1. 初始化赫夫曼链表 2. 编码 3. 译码 4. 打印编码 5. 打印赫夫曼树 6. 打印译码 7. 退出 Initialization(); Encoding(); Decoding(); Code_printing(); Tree_printing(HT,2*n-1); Code_printing1(); 三、详细设计

1.抽象数据类型设计:详细描述抽象数据类型的存储结构和操作的算法

实现;

2.主程序算法设计:给出主程序各函数的算法实现。

void sethuftree(); //有关函数声明 void select0(int s); void sethufcode(); void setcode(); void printtree(); void printhufcode();

void sethuftree() //建立huffuman树

void select0(int s) //找权值最小的2个结点 void printtree() //输出huffman树 void sethufcode() //建立huffman编码 void printhufcode() //输出huffman编码,即空

格+26个大写字母

//--------------------slect函数---------------------- void select(HuffmanTree t,int i,int &s1,int &s2) // s1为最小的两个值中序号小的那个 int min(HuffmanTree t,int i) // 函数void select()调用

void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int

n)

5

《数据结构》课程实验

int InputCode()//获取报文并写入文件 void Initialization()//初始化赫夫曼链表 void Encoding()//编码函数 void Decoding()//译码函数

void Code_printing()//打印编码的函数 void Code_printing1()//打印译码函数

void coprint(HuffmanTree start,HuffmanTree HT) //打印赫夫曼树

的函数

void Tree_printing(HuffmanTree HT,int w)

四、C++语言程序实现:给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参数的含义和函数返回值的含义。 #include #include #include #include #include #include

#define N 27 //空格+26个大写字母 #define M 2*N-1 #define infinity 32767

struct node //huffman树的结点结构 {

int weight; //结点权值

int plink,llink,rlink; //双亲,左孩子,右孩子 };

struct codetype //huffman编码结构 {

int start; //起始位置

char bits[N+1]; //存放0,1的数组 };

struct element //字符及其编码的结构 {

char symbol; //字符

struct codetype code; //字符编码 };

6

《数据结构》课程实验

struct node tree[M+1]; //n个结点的huffman树

struct element table[N+1],t[100]; //n个结点的huffman编码表,报文编码

int x1,x2;

void sethuftree(); //有关函数声明 void select0(int s); void sethufcode(); void setcode(); void printtree(); void printhufcode();

void sethuftree() //建立huffuman树 {

int

i,treeweight[N]={186,64,13,22,32,103,21,15,47,57,1,5,32,20,57,63,15,1,48,51,80,23,8,18,1,16,1}; char tablesymbol[N]={' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; for(i=1;i<=M;i++) //初始双亲,左,右结点为:0 tree[i].plink=tree[i].llink=tree[i].rlink=0;

for(i=1;i<=N+1;i++) //初始化27个字符及其权值 { table[i].symbol=tablesymbol[i-1]; tree[i].weight=treeweight[i-1]; }

for(i=N+1;i<=M;i++) //找权值最小的2个结点,组成huffman树 { select0(i-1); //调用找权值最小的2个结点函数 tree[x1].plink=i; tree[x2].plink=i;

7

《数据结构》课程实验

tree[i].llink=x1; tree[i].rlink=x2; tree[i].weight=tree[x1].weight+tree[x2].weight; } }

void select0(int s) //找权值最小的2个结点 {

int i; int v1,v2;

v1=v2=infinity; x1=x2=0;

for(i=1;i<=s;i++) if(tree[i].plink==0) if(tree[i].weight

void printtree() //输出huffman树 {

int i;

printf(\哈夫曼树为:\\n\\n\

printf(\结点值 权值(频度) 双亲 左孩子 右孩子\\n\ for(i=1;i<=N;i++)

printf(\ %-8c%-11d%-8d%-8d%d\\n\tree[i].llink,tree[i].rlink); for(i=N+1;i<=M;i++)

printf(\ %-11d%-8d%-8d%d\\n\

8

搜索更多关于: 实验七 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

《数据结构》课程实验 赫夫曼编码解码系统 1. 初始化赫夫曼链表 2. 编码 3. 译码 4. 打印编码 5. 打印赫夫曼树 6. 打印译码 7. 退出 Initialization(); Encoding(); Decoding(); Code_printing(); Tree_printing(HT,2*n-1); Code_printing1(); 三、详细设计 1.抽象数据类型设计:详细描述抽象数据类型的存储结构和操作的算法实现; 2.主程序算法设计:给出主程序各函数的算法实现。 void sethuftree(); //有关函数声明 void select0(int s); void sethufcode(); void setcode(); void pr

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com