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

当前位置:首页 > 哈工大数据结构大作业——哈夫曼树生成、编码、遍历

哈工大数据结构大作业——哈夫曼树生成、编码、遍历

  • 62 次阅读
  • 3 次下载
  • 2025/5/26 11:43:38

#define m 2*(n)-1

typedef struct//建立哈夫曼结点结构体 {

char data; float weight; int lchild; int rchild; int parent; }htnode;

typedef struct//建立哈夫曼编码结构体 {

char ch; char bits[n+1]; }htcode;

void SelectMin(htnode T[m],int nn,int&p1,int&p2)//选择哈夫曼树所有结点中权值最小的两个根结点 { int i,j;

for(i=0;i<=nn;i++) {

if(T[i].parent==-1)

{ p1=i;

break; }

}

for(j=i+1;j<=nn;j++) {

if(T[j].parent==-1)

-可编辑修改-

{ p2=j;

break; }

}

for(i=0;i<=nn;i++) {

if((T[p1].weight>T[i].weight)&&(T[i].parent==-1)

&&(p2!=i)) p1=i;

}

for(j=0;j<=nn;j++) {

if((T[p2].weight>T[j].weight)&&(T[j].parent==-1) }

void CreatHT(htnode T[m])//建立哈夫曼树 {

int i,p1,p2; for(i=0;i

{

T[i].parent=T[i].lchild=T[i].rchild=-1;//赋初值 } {

SelectMin(T,i-1,p1,p2); T[p1].parent=T[p2].parent=i;

-可编辑修改-

&&(p1!=j)) p2=j;

}

for(i=n;i

}

if(T[p1].weight

T[i].lchild=p2; }

T[i].weight=T[p1].weight+T[p2].weight; }

T[i].rchild=p2;

T[i].rchild=p1;

void HuffmanEncoding(htnode T[m],htcode C[n])//哈夫曼编码 {

int c,p,i; char cd[n+1]; int start;

cd[n]='\\0';//结束表示 for(i=0;i

{

C[i].ch=T[i].data; start=n; c=i;

while((p=T[c].parent)>=0) {

start=start-1; if(T[p].lchild==c) {

cd[start]='0';

-可编辑修改-

}

}

else {

cd[start]='1';

} c=p;

}

strcpy(C[i].bits,&cd[start]); }

void preorder(htnode T[],int i)//先序遍历哈夫曼树:递归的办法 {

printf(\

if(T[i].lchild!=-1) { }

void inorder(htnode T[],int i)//中序遍历哈夫曼树 {

-可编辑修改-

preorder(T,T[i].lchild); preorder(T,T[i].rchild);

}

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

。 #define m 2*(n)-1 typedef struct//建立哈夫曼结点结构体 { char data; float weight; int lchild; int rchild; int parent; }htnode; typedef struct//建立哈夫曼编码结构体 { char ch; char bits[n+1]; }htcode; void SelectMin(htnode T[m],int nn,int&p1,int&p2)//选择哈夫曼树所有结点中权值最小的两个根结点 { int i,j; for(i=0;i<=nn;i++) { if(T[i].parent==-1)

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