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

当前位置:首页 > 北邮数据结构实验报告

北邮数据结构实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/5/31 19:55:06

Node *front=p->next; if(n==0)

throw exception(\没有输入字符\ for(int i=0;i

root.data=front->count; root.lchild=-1; root.rchild=-1; root.parent=-1; front=front->next; } front=p; int New1,New2; for(i=n;i {

SelectMin(New1,New2,0,i); //从0~i中选出两个权值最小的结点

root.parent=root.parent=i; //用两个权值最小的结点生成新结点, 新节点为其双亲

root.data=root.data+root.data;//新结点的权值为其孩子的权值的和 root.lchild=New1; root.rchild=New2; root.parent=-1;

}

CreateCodeTable(p); //创建编码表 }

时间复杂度:

在选取两个权值最小的结点的函数中要遍历链表,时间复杂度为O(n),故该函数 的时间复杂度为O(n^2)

3.

(void

HuffmanTree::CreateCodeTable(Node *p)) 算法伪代码: 1.初始化编码表

2.初始化一个指针,从链表的头结点开始,遍历整个链表

将链表中指针当前所指的结点包含的字符写入编码表中

得到该结点对应的哈夫曼树的叶子结点及其双亲 如果哈夫曼树只有一个叶子结点,将其字符对应编码设置为0

如果不止一个叶子结点,从当前叶子结点开始判断 如果当前叶子结点是其双亲的左孩子,则其对应的编码为0,否 则为1

child指针指向叶子结点的双亲,parent指针指向child指针的双亲, 重复的操作

将已完成的编码倒序 取得链表中的下一个字符 3.输出编码表 源代码:

void HuffmanTree::CreateCodeTable(Node *p) {

HCodeTable=new HCode; //初始化编码表 Node *front=p->next; for(int i=0;i {

HCodeTable.data=front->character; //将第i个字符写入编码表

int child=i; //得到第i个字符对应的叶子节点 int parent=root.parent; //得到第i个字符对应的叶子节点的双亲 int k=0;

if(tSize==1) //如果文本中只有一种字符,它的编码为0 {

HCodeTable.code='0'; k++; }

while(parent!=-1) //从第i个字符对应的叶子节点开始,寻找它到根结点的路径 {

if(child==root.lchild) //如果当前结点为双亲的左孩子,则编码为0, 否则编码为1

HCodeTable.code='0'; else

HCodeTable.code='1'; k++;

child=parent; parent=root.parent; }

HCodeTable.code='';

Reverse(HCodeTable.code); //将编码逆置 front=front->next; //得到下一个字符 }

cout for(i=0;i {

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

共分享92篇相关文档

文档简介:

Node *front=p->next; if(n==0) throw exception(\没有输入字符\ for(int i=0;i root.data=front->count; root.lchild=-1; root.rchild=-1; root.parent=-1; front=front->next; } front=p; int New1,New2; for(i=n;i { SelectMin(New1,New2,0,i); //从0~i中选出两个权值最小的结点 root.parent=root.parent=i; //用两个权值最小的结点生成新结点, 新节点为

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价: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