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

    一元稀疏多项式简单计数器论文完整版.doc

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

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

    一元稀疏多项式简单计数器论文完整版.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流一元稀疏多项式简单计数器论文完整版.精品文档.学院数据结构课程设计论文一元稀疏多项式简单计数器学生姓名: 学生学号: 院(系): 计算机 年级专业: 指导教师: 二一年十二月学院本科学生课程设计任务书题目设计一元稀疏多项式简单计数器1、课程设计的目的培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)基本功能要求:(1) 输入并建立多项式(2) 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。(3) 多项式a和b相加,建立多项式a+b,输出相加的多项式。(4) 多项式a和b相减,建立多项式a-b,输出相减的多项式。用带表头结点的单链表存储多项式。测试数据:(1) (2x+5x8-3.1x11)+(7-5x8+11x9)(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)3、主要参考文献1数据结构(C语言版),严蔚敏,清华大学出版社,20032数据结构题集,严蔚敏,清华大学出版社,20053数据结构(C语言版),刘大有,高等教育出版社,20044Data Structure with C+,William FordWilliam Topp,清华大学出版社,20034、课程设计工作进度计划第1天 完成方案设计与程序框图 第2、3天 编写程序代码第4天 程序调试分析和结果第5天 课程设计报告和总结指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称设计一元稀疏多项式简单计数器评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘要数据结构在计算机科学中一门综合性的专业基础课,不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。经过一学期的学习和几周的实验课。对知识的把握还需要从更为有目的性的程序设计来考验。本设计的设计是为了解决数学算数中多项式的相加相减问题。当然这相比于复杂的数学计算简单至极。但对于数据结构知识的巩固却很为重要。设计中主要涉及到带头指针的单链表存储的的知识。采用C语言编写,在对于多项式的存储和计算操作中大量依赖于指针和结构体。通过尾插法建立链表,指数的比较来实现结点元素的相加减。关键字 数据结构 多项式 单链表 指针 结构体 目录摘要I目录21.绪论11.1 前言11.2 问题的提出12.课程设计目的23.需求分析33.1 功能分析33.2 设计思路34.概要设计44.1数据结构的选用44.2多项式的输入44.3主函数和其它函数45.流程图设计65.1函数调用关系65.2程序流程图76.程序代码87.调试运行157.1运行程序操作平台:157.2程序的载入157.3程序的编译157.4程序运行测试数据158.总结181.绪论1.1 前言 计算机是随着社会的发展应运而生,它贯穿了人们生活的方方面面。其中,在科学计算方面,由于算法的高精确和高复杂度,对于计算机的依赖不可言喻。在这里,我设计了一个一元稀疏多项式简单计数器,科学计算算不上,但作为学习性的实践,对自己却很重要。当前计算机软件技术和网络技术飞速发展,软件系统日趋大型化、复杂化。因此社会对软件开发者日出了比以往更高的要求。相应的系统要求也有了很大的提高。本系统用C语言作为程序语言,设计出的系统功能完善,操作方便灵活。1.2 问题的提出 一元稀疏多项式简单计数器基本功能要求:(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。用带表头结点的单链表存储多项式。2.课程设计目的使我们进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。使我们掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。使我们掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。熟练掌握数据结构这门课程,掌握线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用。 进一步熟悉抽象数据类型的定义和实现、如何利用数组的动态分酚实现顺序结构、继承的实现方式。学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、想念结构及基相应的算法并初步掌握算法的时间分析和空间分析的技术。基本掌握程序设计的基本思路和方法。利用所学的基本知识和技能,解决简单的程序设计问题各算法描述培养我们的数据抽象能力。3.需求分析3.1 功能分析 本程序要求输入并建立多项式,能够降幂显示出多项式,实现多项式相加相减的计算问题,输出结果。3.2 设计思路采用链表的方式存储链表,定义结点结构体。运用尾差法建立两条单链表,以单链表polyn p和polyn h分别表示两个一元多项式a和b。为实现处理,社p、q分别指向单链表polya和polyb的当前项,比较p、q结点的指数项。 若p->expn<q->expn,则结点p所指的结点应是“和多项式”中的一项,令指针p后移。 若p->expn=q->expn,则将两个结点中的系数相加,当和不为0时修改结点p的系数。 若p->expn>q->expn,则结点q所指的结点应是“和多项式”中的一项,将结点q插入在结点p之前,且令指针q在原来的链表上后移。4.概要设计4.1数据结构的选用typedef struct Polynomial float coef; /系数 int expn; /指数 struct Polynomial *next;*Polyn,Polynomial;4.2多项式的输入 Polyn CreatePolyn(Polyn head,int m) for(i=0;i<m;i+) p=(Polyn)malloc(sizeof(struct Polynomial); printf("请输入第%d项的系数与指数:",i+1); scanf("%f %d",&p->coef,&p->expn); Insert(p,head); return head;4.3主函数和其它函数 void main() int m,n,a,x; char flag; Polyn pa=0,pb=0,pc; void DestroyPolyn(Polyn p) void PrintPolyn(Polyn P)int compare(Polyn a,Polyn b)Polyn AddPolyn(Polyn pa,Polyn pb)Polyn SubtractPolyn(Polyn pa,Polyn pb)5.流程图设计5.1函数调用关系5.2程序流程图6.程序代码include<stdio.h>#include<malloc.h>typedef struct Polynomial/项的表示 float coef; /系数 int expn; /指数 struct Polynomial *next; /指针域*Polyn,Polynomial; /Polyn为结点指针类型void Insert(Polyn p,Polyn h) /插入或者合并 if(p->coef=0) free(p); /系数为0的话释放结点 else Polyn q1,q2; q1=h;q2=h->next; while(q2&&p->expn<q2->expn) /查找插入位置p与h项一次比较指数 q1=q2; q2=q2->next; if(q2&&p->expn=q2->expn) /将指数相同相合并 q2->coef+=p->coef; free(p); if(!q2->coef) /系数为0的话释放结点 q1->next=q2->next; free(q2); else /指数为新时将结点插入即p->expn>q2expn情况 p->next=q2; q1->next=p;/InsertPolyn CreatePolyn(Polyn head,int m)/建立一个头指针为head、项数为m的一元多项式 int i; Polyn p; p=head=(Polyn)malloc(sizeof(struct Polynomial); head->next=NULL; for(i=0;i<m;i+) p=(Polyn)malloc(sizeof(struct Polynomial); /建立新结点以接收数据 printf("请输入第%d项的系数与指数:",i+1); scanf("%f %d",&p->coef,&p->expn); Insert(p,head); /调用Insert函数插入结点 return head;/CreatePolynvoid DestroyPolyn(Polyn p) /销毁多项式p Polyn q1,q2; q1=p->next; q2=q1->next; while(q1->next) free(q1); /释放q1 q1=q2;/指针后移,循环继续释放,直至销毁 q2=q2->next;void PrintPolyn(Polyn P) /输出多项式 Polyn q=P->next; int flag=1; /项数计数器 if(!q) /若多项式为空,输出0 putchar('0'); printf("n"); return; while (q) if(q->coef>0&&flag!=1) putchar('+'); /系数大于0且不是第一项 if(q->coef!=1&&q->coef!=-1)/系数非1或-1的普通情况 printf("%g",q->coef); if(q->expn=1) putchar('X');/系数为1的情况 else if(q->expn) printf("X%d",q->expn); else if(q->coef=1) if(!q->expn) putchar('1'); else if(q->expn=1) putchar('X'); else printf("X%d",q->expn); if(q->coef=-1) if(!q->expn) printf("-1"); else if(q->expn=1) printf("-X"); else printf("-X%d",q->expn); q=q->next; flag+; /while printf("n");/PrintPolynint compare(Polyn a,Polyn b) if(a&&b) if(!b|a->expn>b->expn) return 1; else if(!a|a->expn<b->expn) return -1; else return 0; else if(!a&&b) return -1;/a多项式已空,但b多项式非空 else return 1;/b多项式已空,但a多项式非空/comparePolyn AddPolyn(Polyn pa,Polyn pb)/求解并建立多项式a+b,返回其头指针 Polyn qa=pa->next; Polyn qb=pb->next; Polyn headc,hc,qc; hc=(Polyn)malloc(sizeof(struct Polynomial);/建立头结点 hc->next=NULL; headc=hc; while(qa|qb) qc=(Polyn)malloc(sizeof(struct Polynomial); switch(compare(qa,qb)/调用compare返回值 case 1: qc->coef=qa->coef; qc->expn=qa->expn; qa=qa->next; break; case 0: qc->coef=qa->coef+qb->coef; qc->expn=qa->expn; qa=qa->next; qb=qb->next; break; case -1: qc->coef=qb->coef; qc->expn=qb->expn; qb=qb->next; break; /switch if(qc->coef!=0) qc->next=hc->next; hc->next=qc; hc=qc; else free(qc);/当相加系数为0时,释放该结点 /while return headc;/AddPolynPolyn SubtractPolyn(Polyn pa,Polyn pb)/求解并建立多项式a-b,返回其头指针 Polyn h=pb; Polyn p=pb->next; Polyn pd; while(p) /将pb的系数取反 p->coef*=-1; p=p->next; pd=AddPolyn(pa,h); for(p=h->next;p;p=p->next) /恢复pb的系数 p->coef*=-1; return pd;/SubtractPolynint main()/主函数 int m,n,flag=0; float x; Polyn pa=0,pb=0,pc,pd,pe,pf;/定义各式的头指针,pa与pb在使用前付初值NULL printf("请输入a的项数:"); scanf("%d",&m); pa=CreatePolyn(pa,m);/建立多项式a printf("请输入b的项数:"); scanf("%d",&n); pb=CreatePolyn(pb,n);/建立多项式a /输出菜单 printf("*n"); printf("操作提示:nt1.输出多项式a和bnt2.建立多项式a+bnt3.建立多项式a-bnt4.退出n"); for(;flag=0) printf("执行操作"); scanf("%d",&flag); if(flag=1)/输出多项式 printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);continue; if(flag=2)/多项式相加 pc=AddPolyn(pa,pb); /调用函数,实现相加 printf("多项式a+b:");PrintPolyn(pc); DestroyPolyn(pc);continue; if(flag=3)/多项式相减 pd=SubtractPolyn(pa,pb); printf("多项式a-b:");PrintPolyn(pd); DestroyPolyn(pd);continue; if(flag=4) break; /结束循环,退出 DestroyPolyn(pa);/销毁多项式,释放内存 DestroyPolyn(pb); return 0;7.调试运行7.1运行程序操作平台:硬件要求:PC机一台软件要求:windows XP以上操作系统 VC+软件7.2程序的载入7.3程序的编译7.4程序运行测试数据(1) (2x+5x8-3.1x11)+(7-5x8+11x9)(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)8.总结 这次课程设计是对数据结构掌握的一次很有分量的测试。确实自己在这次课程设计中认识到自己很多的不足。想了很多,思考了很多。对于知识的把握和编程的经验自己真的是差的太远。 编程是个细致活。不温不火,不急不躁。在五天的编程过程中,这点深有体会。想法太成熟,笔快容易失误;知识太生疏,笔慢错误多。当然,不能强求不出现错误。在编程过程要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。经验丰富的人在错误出现时,能很快的判断出错误的所在,并改之;经验少的人,则往往要花费大量的时间和气力。我相信老师说的,很多程序的编写都有灵感的参与,下次再次看自己程序的时候,也许不能很好的明白当初某些地方的初衷。因此,在编程中,在思想灵感爆发的时候,最好的做法就是在旁边写上注释。这次设计自己就走了很多弯路,程序一长,没有注释,整理调试的时候就很难快速找到问题所在。当然我不避讳自己知识的把握太差,反而应该更加惊醒。C语言虽然是最基础的语言,但是其价值性却不容忽视。简单的说,学会了C语言,很多语言的上手就显得很容易。当初对于C的学习确实有诸多的忽略,以为掌握了基本的语法过了二级就行。现在看来,C部分最精华最难的指针和结构体,指针和数组自己都掌握的一塌糊涂。这学期的数据结构课程又是C语言版的,在学习的过程中难免要咀嚼和回顾C知识。因此学起来其实不是很舒服的。很多知识点自己都是知其表而不懂其用。加之课程又紧,一知半解的半年过去了。而现在看来,数据结构及其算法在解决现实生活中的常见问题和书写软件设计方面上都有着重要的意义。我希望学校安排的课时能再长一点,老师讲解的时候能够用实际中的某些例子来映射知识点,却不是一味的理论性教。只有在实际事例中才能激发学生的趣味和潜能。学生则需要在平时做多思考和研究性讨论。大三了,不能悠哉乎了。需得学一技,长于人一技。做这次课程设计就像从头复习了一遍,从基础到难点。但是益处却很多。把理论应用于实际问题,让我们对于理论的认识又更深了一步,也让我们的实际能力得到了锻炼。总之,五天的忙碌,而现在总结的时候却是五味陈杂。收获与悲悯同在,而路茫茫,需得继续前行!参考文献1严蔚敏,吴伟民 著.数据结构(C语言版).北京:清华大学出版社, 2004. 2谭浩强 著.C语言程序设计.北京:清华大学出版社,2005.3张海潘 著.软件工程编论M .北京:清华大学出版社,2003.4王晓东 著.计算机算法设计与分析M . 北京:电子工业出版社,2005.5徐孝凯 著.数据结构课程实验.北京:清华大学出版社,20016秦锋 著.数据结构(C语言版)例题详解与课程设计指导.中国科学技术大学出版社,2004.7严蔚敏 著.数据结构题集.北京:清华大学出版社,2005.8刘大有 著.数据结构(C语言版).高等教育出版社,20049William FordWilliam Topp 著. Data Structure with C+.清华大学出版社,2003.10参考网站: 大富翁编程网站 源码网 中国源码中心

    注意事项

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

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




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

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

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

    收起
    展开