数据结构课程设计一元稀疏多项式计算器Word下载.docx
《数据结构课程设计一元稀疏多项式计算器Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计一元稀疏多项式计算器Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
4设计内容
4.1需求分析
1、程序所能达到的功能;
(1)输入并建立多项式——creatpolyn();
(2)输出多项式,输出形式为整数序列:
n,c1,e1,c2,e2,…,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数升序排列——printpolyn();
(3)多项式a和b相加,建立多项式a+b,输出相加的多项式——addpolyn();
(4)多项式a和b相减,建立多项式a-b,输出相减的多项式——subpolyn()。
2、输入的形式和输入值的范围;
输入形式:
多项式
输入值范围:
实数
3、输出的形式:
输出多项式,输出形式为整数序列:
n,c1,e1,c2,e2,…,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数升序排列——printpolyn()
4、测试数据:
输入:
a=2X+3X^2;
b=2X^3+7X^4
输出:
a+b=2X+3X^2+2X^3+7X^4
a-b=2X+3X^2-2X^3-7X^4
4.2总体设计
内容包括:
1、说明本程序中用到的所有抽象数据类型的定义;
typedefstructPolynomial
{
floatcoef;
intexpn;
structPolynomial*next;
}*Polyn,Polynomial;
voidInsert(Polynp,Polynh)
PolynCreatePolyn(Polynhead,intm)
voidPrintPolyn(PolynP)
Intcompare(Polyna,Polynb)
PolynAddPolyn(Polynpa,Polynpb)
PolynDerivative(Polynhead)
2、主程序的流程;
3、说明各程序模块之间的层次(调用)关系。
4.3详细设计
函数CreatePolyn建立一个头指针为head、项数为m的一元多项式,然后调运函数Insert向生成链表中保存多项式项数及每项的指数、系数。
函数CreatePolyn生成多项式a和多项式b。
通过函数compare和函数PrintPolyn对多项式a和多项式b指数、系数进行分析。
当多项式a指数指数大于多项式b指数时,链表保存多项式a系数;
当多项式b指数指数大于多项式a指数时,链表保存多项式b系数;
当多项式b指数指数等于多项式a指数时,对多项式a和多项式b系数进行加减运算,之后将系数保存在链表中。
函数PolynAddPolyn对多项式a和多项式b进行加运算,调运函数compare、函数PrintPolyn、函数CreatePolyn。
函数SubtractPolyn对多项式a和多项式b进行减运算,其对多项式b中各系数正负取反,然后调用函数PolynAddPolyn进行a+(-b)。
主函数运行分别输入多项式和多项式的项数、系数和指数,然后选择对多项式操作A:
a+b或B:
a-b,从而实现对多项式的加减运算。
,
3、函数的调用关系图。
4.4测试与分析
4.4.1测试:
4.4.2分析:
1、调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
认真观察自己的算法,看错误来自哪里,找出错误,并加以修改。
2、算法的时间复杂度和空间复杂度的分析,改进设想。
Insert的时间复杂度O
(1)空间复杂度O
(1);
Derivativ的时间复杂度O
(1)空间复杂度O
(1);
CreatePolyn的时间复杂度O(n)空间复杂度O
(1);
compare的时间复杂度O
(1)空间复杂度O
(1);
PrintPolyn的时间复杂度O
(1)空间复杂度O
(1);
AddPolyn的时间复杂度O(n)空间复杂度O
(1);
SubtractPolyn的时间复杂度O(n)空间复杂度O
(1);
Main()的时间复杂度O(n)空间复杂度O
(1)。
4.5附录
定义多项式的项
typedefstructPolynomial
向链表中插入多项式的项数、系数、指数。
建立一个头指针为head、项数为m的一元多项式。
调运函数Insert生成多项式a和多项式b。
当多项式指数为“1”时,对多项式a和多项式b系数进行加减。
求解并建立多项式a+b,返回其头指针。
调运函数compare对多项式a和多项式b进行降幂输出。
PolynSubtractPolyn(Polynpa,Polynpb)
求解并建立多项式a-b,返回其头指针。
对多项式b中各项系数正负取反,然后调运函数PolynAddPolyn,对多项式a和多项式b进行a+(-b)降幂输出。
求解并建立导函数多项式,并返回其头指针。
voidmain()//主函数
{
intm,n,a,x;
charflag;
Polynpa=0,pb=0,pc;
printf("
欢迎使用多项式操作程序\n\n"
);
请输入a的项数:
"
scanf("
%d"
&
m);
pa=CreatePolyn(pa,m);
//建立多项式a
请输入b的项数:
n);
pb=CreatePolyn(pb,n);
//建立多项式b
//输出菜单
printf("
*****************************************************\n"
*多项式操作程序*\n"
*A:
输出a+bB:
输出a-b*\n"
**\n"
while(a)
\n请选择操作:
%c"
flag);
//空格符号一定要注意
switch(flag)
{
case'
A'
:
a'
XX文库-让每个人平等地提升自我{
XX文库-让每个人平等地提升自我pc=AddPolyn(pa,pb);
\na+b="
PrintPolyn(pc);
break;
}
B'
b'
pc=SubtractPolyn(pa,pb);
\na-b="
default:
\n您的选择错误,请重新选择!
\n"
}
5总结与展望
在编程过程中很容易发现程序中的错误,要尽快找出这些错误,使程序能正确运行。
平时缺乏锻炼即使在明确的出错提示下也往往找不出错误,不知道该怎么办,而求救于别人。
但更重要的是通过自己的直接实践来累积。
因此,在实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动,再进行编译、连接和运行。
我觉得我们对于《数据结构》的学习不仅包括理论部分的学习,还要让我们勤动手,多实践。
刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。
老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次和同学讨论研究,逐渐能自己找出错误,并加以改正。
此次的程序设计能够成功,是我和我的同学共同努力作用的结果。
在这一段努力学习的过程中,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。
现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。
只要努力去学习,就会灵活的去应用它。
参考文献
[1]严蔚敏,吴伟民数据结构(c语言版)清华大学出版社;
[2]谭浩强c程序设计(第三版)清华大学出版社;
[3]徐孝凯数据结构电子工业出版社;
[4]徐翠霞,崔玲玲,邵回祖数据结构案例教程北京大学出版社;
成绩评定
成绩教师签字