您所在位置: 网站首页 / 数据结构课程设计.docx / 文档详情
数据结构课程设计.docx 立即下载
2025-08-27
约3万字
约51页
0
30KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

数据结构课程设计.docx

数据结构课程设计.docx

预览

免费试读已结束,剩余 46 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构课程设计

第一篇:数据结构课程设计数据结构课程设计1.赫夫曼编码器设计一个利用赫夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。要求:1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)2)初始化:键盘输入字符集大小26、26个字符和26个权值(统计一篇英文文章中26个字母),建立哈夫曼树;3)编码:利用建好的哈夫曼树生成哈夫曼编码;4)输出编码(首先实现屏幕输出,然后实现文件输出);5)界面优化设计。代码如下:#include#include#include#include#defineN200typedefstructHTNode//结构体{intWeight;charch;intParent,Lchild,Rchild;}HTNode;typedefchar**HCode;voidSave(intn,HTNode*HT)//把权值保存到文件{FILE*fp;inti;if((fp=fopen(“data.txt”,“wb”))==NULL){printf(“cannotopenfilen”);return;}for(i=0;iif(fwrite(&HT[i].Weight,sizeof(structHTNode),1,fp)!=1)printf(“filewriteerrorn”);fclose(fp);system(“cls”);printf(“保存成功!”);}voidCreate_H(intn,intm,HTNode*HT)//建立赫夫曼树,进行编码{intw,k,j;charc;for(k=1;kif(k{printf(“n请输入权值和字符(用空格隔开):”);scanf(“%d”,&w);scanf(“%c”,&c);HT[k].ch=c;HT[k].Weight=w;}elseHT[k].Weight=0;HT[k].Parent=HT[k].Lchild=HT[k].Rchild=0;}intp1,p2,w1,w2;for(k=n+1;kp1=0;p2=0;w1=32767;w2=32767;for(j=1;j{if(HT[j].Parent==0){if(HT[j].Weight{w2=w1;p2=p1;w1=HT[j].Weight;p1=j;}elseif(HT[j].Weight{w2=HT[j].Weight;p2=j;}}}HT[k].Lchild=p1;HT[k].Rchild=p2;HT[k].Weight=HT[p1].Weight+HT[p2].Weight;HT[p1].Parent=k;HT[p2].Parent=k;}printf(“输入成功!”);}voidCoding_H(intn,HTNode*HT)//对结点进行译码{intk,sp,fp,p;char*cd;HCodeHC;HC=(HCode)malloc((n+1)*sizeof(char*));cd=(char*)malloc(n*sizeof(char));cd[n-1]='';printf(“************************n”);printf(“CharCodingn”);for(k=1;k{sp=n-1;p=k;fp=HT[k].Parent;for(;fp!=0;p=fp,fp=HT[fp].Parent)if(HT[fp].Lchild==p)cd[--sp]='0';elsecd[--sp]='1';HC[k]=(char*)malloc((n-sp)*sizeof(char));strcpy(HC[k],&cd[sp]);printf(“%c%sn”,HT[k].ch,HC[k]);}printf(“************************n”);free(cd);}voidRead(intn,HTNode*HT)//从文件中读出数据{inti;FILE*fp;if((fp=fopen(“data.txt”,“rb”))==NULL){printf(“cannotopenfilen”);exit(0);}for(i=0;ifread(&HT[i].Weight,sizeof(structHTNode),1,fp);//printf(“%dn”,HT[i].Weight);}Coding_H(n,HT);fclose(fp);}voidPrint_H(intm,HTNode*HT)//输出赫夫曼造树过程{intk;printf(“************************n”);printf(“NumWeightParLChRChn”);for(k=1;kprintf(“%d”,k);printf(“%d”,HT[
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

数据结构课程设计

文档大小:30KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用