数据结构课程设计--一元多项式计算问题(C语言).doc
长 沙 学 院课程设计说明书题目一元多项式计算问题系(部)计算机科学与技术系专业(班级)12软件4班姓名谢仲蛟学号2012022411指导教师邱建雄起止日期2013.12.92013.12.20课程设计任务书课程名称:数据结构与算法设计题目:一元多项式计算问题已知技术参数和设计要求:问题描述:设计一个稀疏多项式简单计算器基本要求:(1)输入并分别建立多项式A和B(2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列(3)完成两个多项式的相加、相减,并将结果输出;测试数据:(1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2 (2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7(3) A+B A=x3+x1 B=-x3-x1(4) A+B A=0 B=x7+x5+x3+x1(5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x选作内容:(1).多项式在x=1时的运算结果(2)求多项式A和B的乘积设计工作量:40课时工作计划:班级时间节次地点内容指导老师12软件4班15周周一5-6节致远楼1403布置任务邱建雄15周周一9-10节致远楼1403上机调试15周周二5-8节致远楼1403上机调试15周周三5-8节致远楼1403上机调试15周周四1-4节涵虚楼C3302答疑15周周四7-8节致远楼1403上机调试15周周五1-4节涵虚楼A1103答疑16周周一5-6节致远楼1402上机调试16周周二5-8节致远楼1403上机调试16周周三1-4节致远楼1403上机调试16周周三5-8节致远楼1403上机调试16周周五5-8节致远楼1403答辩指导教师签名:日期: 教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名谢仲蛟学号2012022411专业软件工程班级软件4班设计题目一元多项式计算问题指导教师邱建雄指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;摘要本次课程设计是在数据结构基础上设计以C语言来实现的,它的目的是帮助同学更深入的了解数据结构这门课程并熟练运用C语言,使同学达到熟练掌握的程度。课程设计一个稀疏多项式简单计算器。其基本要求有六:其一,输入建立两个多项式;其二,输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数的降序序列排列;其三,多项式排序,多项式按指数的降序序列排列;其四,多项式相加,指数相同系数相加,指数不同则把此项加进去;其五,多项式相减,指数相同系数相加,指数不同则把此项取反再加进去;其六,返回多项式的项数。选做内容有二:其一,计算多项式的值;其二,多项式相乘。关键词: 一元多项式,相加,相减,排序,相乘,计算,目录1 设计内容与要求72 详细设计83 测试16参考文献18附录:程序源代码191 设计内容与要求1、设计内容:设计一个稀疏多项式简单计算器2、基本要求:(1)输入并分别建立多项式A和B(2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,其中n是多项式的项数,ci和 ei是第i项的系数和指数,序列按指数降序排列(3)完成两个多项式的相加、相减,并将结果输出; 3、提升要求:(1).多项式在x=1时的运算结果(2)求多项式A和B的乘积2 详细设计1、主要设计思路本次设计的一元多项式计算问题以线性表的链式存储结构来存储多项式每一项的参数,采用二级存储结构,定义了两个结构体,一个用来存放每一项的信息如系数和指数,另一个用来存放指向链表的头结点的指针和多项式的项数。2、主要模块和流程开始操作界面创建多项式相加 1 5 排序相减 选择操作 2 6返回项数计算 3 7 输出多项式相乘 4 8 9 退出 结束3、数据结构Pya *nexteiai*nexteiaiaiei*next*Poln4、界面设计我的界面设计比较简单。有一个循环体构成,其中有八个选项,分别为:0.退出1.创建多项式2.排序3.相加4.相减5.计算6.相乘7.项数。用户可以任意选择其中的选项进行操作。其实现代码为:#include<stdio.h>#include<stdlib.h>#include"Polynomial.h"void main()printf("n*xiezhongjiao!*n");struct Polynomial *Pya,*Pyb; Pya = new Polynomial; Pyb = new Polynomial;openface(); int A=1;int x0=1,x1=1;while(A)printf("选择:");scanf("%d",&A);switch(A)case 0: break;case 1: printf("Pya:n"); scan_polynomial(Pya);/*创建*/printf("Pyb:n"); scan_polynomial(Pyb);/*创建*/printf("Pya = "); print_polynomial(Pya);/*输出*/ printf("Pyb = "); print_polynomial(Pyb);/*输出*/ break;case 2: sort_polynomial(Pya);/*排序*/ printf("Pya = "); print_polynomial(Pya);/*输出*/sort_polynomial(Pyb); printf("Pyb = "); print_polynomial(Pyb);/*输出*/ break;case 3: addition_polynomial(Pya,Pyb);/*相加*/ printf("Pya+Pyb = "); print_polynomial(Pya);/*输出*/ break;case 4: mimus_polynomial(Pya,Pyb);/*相减*/ printf("Pya-Pyb = "); print_polynomial(Pya);/*输出*/ break;case 5: printf("输入x的值:");scanf("%d",&x0); count_polynomial(Pya,x0);/*计算*/printf("输入x的值:");scanf("%d",&x1); count_polynomial(Pyb,x1);/*计算*/ break;case 6: product_polynomial(Pya,Pyb);/*相乘*/ printf("Pya*Pyb = "); print_polynomial(Pya);/*输出*/ break;case 7: printf("Pya项数:"); n_polynomial(Pya);/*返回项数*/printf("Pyb项数:"); n_polynomial(Pyb);/*返回项数*/ break;default: printf("请正确输入."); break;/*end of switch*/ /*end of while*/printf("n感谢xzj,感谢home,感谢XX,感谢CL,感谢501,感谢yyxsz,感谢ccsu!n"); void openface()printf("n*n");printf("1:创建多项式n");printf("2:排序n");printf("3:相加n");printf("4:相减n");printf("5:计算n");printf("6:相乘n");printf("7:项数n");printf("0:退出n");printf("*n");5、功能设计1、输入多项式此功能为创建一个线性链式链表,并将多项式每一项的信息输入到链表中存