数据结构报告c语言上机操作

数据结构报告c语言上机操作

ID:14238285

大小:886.50 KB

页数:28页

时间:2018-07-27

数据结构报告c语言上机操作_第1页
数据结构报告c语言上机操作_第2页
数据结构报告c语言上机操作_第3页
数据结构报告c语言上机操作_第4页
数据结构报告c语言上机操作_第5页
资源描述:

《数据结构报告c语言上机操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构C语言上机操作学部:信息科学与技术学部学号:指导老师:姓名:专业班级:一、实验目的熟练C言语语法及操作,运用C语言实现数据结构中的具体过程。理解数据结构在计算机中的具体形式。学习数据结构中赫夫曼变法,表和图的实现过程。二、实验环境及参考书籍MicrosoftVisualC++6.0数据结构(C语言版),程序设计基础(C语言)。三、实验内容赫夫曼编码:#include"stdio.h"#include"string.h"#include"conio.h"#include"stdlib.h"/**//*根据统计函数得到字符的种类数N和各自出现的次数,建立N个结点,由此构造一颗哈夫曼树。*/

2、#defineN30/*叶子结点数,即在信息中最多可出现30种字符*/typedefstruct{chardata;/*编码对应的字符*/intweight;/*结点的权值*/intlchild,rchild,parent;/*左右孩子及双亲的下标*/}HTNode;intStat(char*st,intcnt[],charstr[])/*统计字符信息中出现的字符种类数和各字符出现的次数*/{char*p;inti,j,k,num[27];for(i=0;i<26;i++){num[i]=0;}for(p=st;*p!='';p++){//*p=tolower(*p);/*若字符信息中有大

3、写字母,则将其转换成小写字母*/if(*p>='a'&&*p<='z')/**/{k=*p-96;num[k]++;}}j=0;for(i=0;i<26;i++){if(num[i]!=0){str[j]=i+96;cnt[j]=num[i];j++;}}returnj;}voidCreatHufmTree(HTNodeht[],intn)/*建立哈夫曼树*/{inti,k,m1,m2,l,r;for(i=0;i<2*n-1;i++)ht[i].lchild=ht[i].rchild=ht[i].parent=0;/*对所有结点的左右孩子及双亲指针域赋空值*/for(i=n;i<2*n-1;i

4、++){m1=m2=10000;/*m1为最小值,m2为次小值*/l=r=0;for(k=0;k<=i-1;k++)if(ht[k].parent==0&&ht[k].weight

5、[r].weight;/*新结点的权值为两个结点的权值之和*/ht[i].lchild=l;/*权值最小的结点是新结点的左孩子*/ht[i].rchild=r;/*权值次小的结点是新结点的右孩子*/}}typedefstruct{charbits[N];/*存放哈夫曼编码的字符数组*/intstart;/*记录编码的起始位置,因为每种字符的编码长度不同*/}HCode;voidHufmCode(HTNodeht[],HCodehcd[],intn)/*利用哈夫曼树求出各字符的哈夫曼编码*/{inti,f,c,k;HCodecd;/*用于临时存放编码串*/for(i=0;i

6、start=n;c=i;/*从叶子结点ht[i]开始向上回溯*/f=ht[i].parent;/*找到叶子结点ht[i]的双亲结点ht[f]*/while(f!=0)/*回溯到树根结点为止*/{if(ht[f].lchild==c)/*若ht[c]是ht[f]的左孩子,生成代码为0*/cd.bits[cd.start--]='0';else/*若ht[c]是ht[f]的右孩子,生成代码为1*/cd.bits[cd.start--]='1';c=f;f=ht[f].parent;}cd.start++;/*start指向哈夫曼编码最开始字符*/hcd[i]=cd;/*将得到的第i种字符的哈夫曼编

7、码存入hcd[i]中*/}printf("输出哈夫曼编码:");for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。