收藏 分享(赏)

数据结构课程设计——一元稀疏多项式.doc

上传人:hskm5268 文档编号:6359159 上传时间:2019-04-09 格式:DOC 页数:17 大小:123.50KB
下载 相关 举报
数据结构课程设计——一元稀疏多项式.doc_第1页
第1页 / 共17页
数据结构课程设计——一元稀疏多项式.doc_第2页
第2页 / 共17页
数据结构课程设计——一元稀疏多项式.doc_第3页
第3页 / 共17页
数据结构课程设计——一元稀疏多项式.doc_第4页
第4页 / 共17页
数据结构课程设计——一元稀疏多项式.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、课程设计说明书设计题目: 数据结构课程设计 专 业: 班级: 设 计 人: 课 程 设 计 任 务 书一、课程设计题目:设计一个一元稀疏多项式计算器 二、设计原始资料:数据结构 C 语言版教材及习题集 三、设计应解决下列各主要问题: 1、输入并建立一元稀疏多项式 2、输出多项式,输出形式为整数序列 n,c1,e1,c2,e2,cn,en,其中 n 是多项式的项数,ci 和 ei 分别是第 I 项的系数和指数,序列指指数降序排列; 3、多项式 a 和 b 相加,建立多项式 a+b; 4、多项式 a 和 b 相减,建立多项式 a-b。 四、设计说明书应附有下列图纸: 五、命题发出日期: 设计应完成

2、日期: 设计指导教师(签章): 系主任(签章): 指导教师对课程的评语指导教师(签章): 年 月 日学生课程设计一、 需求分析1. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。2. 程序执行的命令包括:1) 创建一元多项式 1;2) 创建一元多项式 2;3) 输出一元多项式4) 计算多项式 1 和多项式 2 的和;5) 计算多项式 1 和多项式 2 的差注意:输出形式为整数序列 n,c1,e1,c2,e2,cn,en,其中n 是多项式的项数,ci 和 ei 分别是第 I 项的系数和指

3、数,序列指指数降序排列3.测试数据1) )721.3()157()1.352( 9988 xxxxx;2) ;254342 3) 0)()(33xx4) )22 x二、 概要设计为实现上述程序功能,应以带头结点的单链表存储多项式1. 多项式的抽象数据类型为:ADT Polynmial数据对象:D=ai|aiTermSet,i=1,2,3,m,TermSet 中的每一个元素包含一个表示系数的实数和表示指数的整数学生课程设计数据关系:R1=ai-1,aiD,且 ai-1中的指数next=NULL;for(i=0; icoef,Insert(p,head); /调用 Insert 函数插入结点ret

4、urn head;void DestroyPolyn(Polyn p)/销毁多项式 pq1=p-next;q2=q1-next;while(q1-next)free(q1);q1=q2;q2=q2-next;void Insert(Polyn p,Polyn h)if(p-coef=0) free(p);/系数为 0 的话释放结点elseq1=h;q2=h-next;学生课程设计while(q2q2=q2-next;if(q2free(p);if(!q2-coef)/系数为 0 的话释放结点q1-next=q2-next;free(q2);else/指数为新时将结点插入p-next=q2;q1

5、-next=p;学生课程设计void PrintPolyn(Polyn P)Polyn q=P-next;int flag=0;/项数计数器while(q)flag+;q=q-next;q=P-next;if(!q)/若多项式为空,输出 0putchar(0);printf(“n“);return;printf(“%d “,flag);while(q)if(q-coef!=1学生课程设计elseif(q-coef=1)printf(“%g %d “,q-coef,q-expn);if(q-coef=-1)printf(“%g %d “,q-coef,q-expn);q=q-next;print

6、f(“n“);int compare(Polyn a,Polyn b)if(aelse if(!a|a-expnexpn) return -1;else return 0;else if(!a/a 多项式已空,但 b 多项式非空学生课程设计else return 1;/b 多项式已空,但 a 多项式非空Polyn 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);

7、/建立头结点hc-next=NULL;headc=hc;while(qa|qb)qc=(Polyn)malloc(sizeof(struct Polynomial);switch(compare(qa,qb)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;if

8、(qc-coef!=0)qc-next=hc-next;hc-next=qc;hc=qc;else free(qc);/当相加系数为 0 时,释放该结点return headc;学生课程设计Polyn 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;retur

9、n pd;3.主函数及其他函数的伪代码算法Int main()CreatPolyn(a);CreatPolyn(b);交互界面菜单;学生课程设计Switch(choose)Case a: printf(a);Case b: printf(b);Case c: printf(a+b);Case d: printf(a-b);Case e: exit;四、 测试结果1.人机交互界面2.测试结果显示学生课程设计 )721.3()157()1.352(9988 xxxxx )1()()1(25435432 xxxx学生课程设计0)()(33xx)(0)(2332 xx学生课程设计五、 总结反思经过这段

10、为期不久的课程设计,使我对于数据结构有了更深层次的理解,对于链表这种数据结构的认识也更加深刻了。 在这个过程中。我曾因为实践经验缺乏,错误过多失落过;也曾经仿真成功而热情高涨。我也感觉用心细心地做好一件事情的重要性,在这次课程设计中,体会到了做设计的严谨,更加加深了我对课程设计的兴趣。在此次课程设计过程中,遇到不懂的问题我会及时向老师,同学请教或者是在网上查询相关的资料,以更好地完成该项课题设计。在实践结束后,深深地体会到实践对于工科专业的重要性。在学习数据结构的过程中总是觉得有些东西模棱两可,感觉到不能深一步的理解,也因为代码的冗长而缺乏耐心去完成每一个。通过这次课程设计,原本关于链表的模棱两可的东西逐渐变得清晰起来,以后一定加强动手实践的能力,多动手,多思考!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报