欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构课程设计.doc

    • 资源ID:34698618       资源大小:36.50KB        全文页数:6页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计.doc

    如有侵权,请联系网站删除,仅供学习与交流数据结构课程设计【精品文档】第 6 页姓名: 学号:班级:指导老师: 学院:计算机学院1 大数相乘1. 问题描述两个比较大的数,远远超过long long 类型,相乘,并计算结果。2. 设计思路通过模拟手工计算两数相乘,从低位乘到高位,两重循环,第一重循环控制乘数的第i位数与被乘数的相乘,第二重循环是被乘数的第j位数。第二重循环每循环完一次,再把结果*10与上次的结果相加,这里又运用到了大数相加,这样一直处理到第一重循环结束。只要合理的处理好进位就可以了。3. 数据结构设计把两数每位数存放数组里,通过控制循环实现相乘。4. 功能函数设计void nixu()void mul ();计算两个存在数组里的大数计算相乘结果。5. 程序代码#include<iostream>#include<cstring>using namespace std;void nixu(char* str, int p, int q) char temp; while(p < q) temp = strp; strp = strq; strq = temp; p +; q -;void mul(char* str1, char* str2)char result200; int l1 = strlen(str1); int l2 = strlen(str2); memset(result,'0',l1+l2); resultl1+l2 = '0' nixu(str1, 0, l1-1); nixu(str2, 0, l2-1); int index1; int index2; for(int i=0;i<l2; i+) index1 = 0; index2 = 0; for(int j=0;j<l1;j+) int temp1 = (str1j - '0') * (str2i - '0') + index1; index1 = temp1 / 10; temp1 = temp1 % 10; int temp2 = (resulti+j - '0') + temp1 + index2; index2 = temp2 / 10; resulti+j = temp2 % 10 + '0' resulti + l1 += index1 + index2; nixu(result, 0, l1+l2-1);cout<<"相乘后的数字为:"<<endl;for(int i=0;i<l1+l2;i+)if(resulti != '0')cout<<resulti;cout<<endl;int main()char str1100,str2100;cout<<"请输入需要相乘的数字"<<endl;cin>>str1;cin>>str2;int l1 = strlen(str1);int l2 = strlen(str2);mul(str1,str2);return 0;6运行测试7设计心得大数相乘和大数相加不一样,大数相加比大数相乘简单一些,所以在大数相乘这边花了一点时间。2 哈弗曼树1.问题描述欲发一封内容为AABBCAB (共长 100 字符,其中:A 、B 、C 、D 、E 、F分别有7 、9 、12 、22 、23、27个)的电报报文,实现哈夫曼编码,并求平均编码长度。2.设计思路建立一个哈夫曼树,求编码的,再求平均编码长度。3.数据结构设计建立一个储存字符出现数目以及字符编码后的长度struct Inforint weight ;int length ;w30;再建立一个储存哈夫曼树的结点数据结构typedef structchar ch;int weight;int lchild,rchild ,parent;Hnode;4.功能函数设计void select(const Hnode HT,int n,int &s1,int &s2)求数组中权值最小和次小的值的下标void HTree(Hnode *huff , Infor w , int n)建立哈夫曼树,编码和编码长度。5.程序代码#include <stdio.h>#include <string.h>#include <limits.h>typedef structchar ch;int weight;int lchild,rchild ,parent;Hnode;struct Inforint weight ;int length ;w30;void select(const Hnode HT,int n,int &s1,int &s2) int i; s1 = s2 = 0; int min1 = INT_MAX;/最小值,INT_MAX在<limits.h>中定义的 int min2 = INT_MAX;/次小值 for ( i = 1; i <= n; +i ) if ( HTi.parent = -1 ) /筛选没有父节点的最小和次小权值下标if ( HTi.weight < min1 ) /如果比最小值小min2 = min1; s2 = s1;min1 = HTi.weight; s1 = i; else if ( (HTi.weight >= min1) && (HTi.weight < min2) )/如果大于等于最小值,且小于次小值 min2 = HTi.weight; s2 = i; else /如果大于次小值,则什么都不做void HTree(Hnode *huff , Infor w , int n)int m = 2*n-1 ,sum , s1 ,s2 ;for(int i = 1 ; i <= n ; +i )huffi.weight = wi-1.weight;huffi.lchild = huffi.rchild = huffi.parent = -1 ;for(int i = n+1 ; i <= m ; +i)huffi.weight = -1;huffi.lchild = huffi.rchild = huffi.parent = -1 ;if(n != 1)for(int i = 1 ; i <= n-1 ; +i )select(huff,n+i-1,s1,s2);sum = huffs1.weight+huffs2.weight ;huffn+i.weight = sum ;huffs1.parent = huffs2.parent = n + i ;huffn+i.lchild = s1 ;huffn+i.rchild = s2 ;elsew0.length = 1;for(int i = 1 ; i <= n ; +i)int k = 0 , c = 0 ;char temp10 ;for( int j = huffi.parent , k = i ; j != -1 ; k = j , j = huffj.parent )wi-1.length+;if(huffj.lchild = k)tempc+ = '0' ;elsetempc+ = '1' ;printf("%c 的编码为:",i+'A'-1) ;for(int i = c-1 ; i>= 0 ; -i)putchar(tempi) ;puts("") ;int main()Hnode huff60 ;char str1000;w0.weight = 7 ;w1.weight = 9 ;w2.weight = 12;w3.weight = 22;w4.weight = 23;w5.weight = 27;HTree(huff,w,6);int b=0;for(int i = 0 ; i < 6 ; +i)b += wi.length*wi.weight;printf("平均编码长度为: %.1fn",(b*1.0)/6) ;6运行测试

    注意事项

    本文(数据结构课程设计.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开