(2)数据流入:输入函数。(3)数据流出:多项式相加后的结果。(4)程序流程图:多项式的加法流程图如图2所示。(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运
算。
图表2
开始
定义存储结果的空链r
存储多项式1的空链P是否为空
否
存储多项式2的空链Q是否为空
否同指数项系数相加后存入r中
是
是
直接把q中各项存入r
直接把p中各项存入r中
输出存储多项式的和的链r合并同类项
结束
f3、多项式的减法(1)功能:将两多项式相减。(2)数据流入:调用输入函数。(3)数据流出:多项式相减后的结果。(4)程序流程图:多项式的减法流程图如图3所示。(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。
图表3
开始
定义存储结果的空链r
存储多项式1的空链P是否为空
否
存储多项式2的空链Q是否为空
否同指数项系数相加后存入r中
是
是
直接把q中各项存入r
把p中各项系数改变符号后存入r中
输出存储多项式的和的链r合并同类项结束
f四.详细设计1根据题目要求采用单连表存储结构typedefstructLNode定义单链表LNodeLi
kListvoidI
itListLi
kListL定义一个空表voidCreatPoly
Li
kListL用单链表定义一个多项式voidDispPoly
Li
kListL显示输入的多项式voidPoly
Li
kListpaLi
kListpb2.主函数mai
voidmai
LNodeL1L2Poly
L1L22函数的调用关系层次结构多项式Poly
用单链表定义多项式CreatPoly
定义一个空表I
itList显示输入的多项式DispPoly
五调试分析
采用单连表形式按照指数降序排列建立并输出多项式;在相加,相减的过程中如果指数相同就执行系数相加,相减,否则就把大的项直接写入。完成两个多项式的相加、相减将从新得到的单连表结果输出;该算法的时间复杂度为两个多项式的项式之和
六:调试结果
1测试的数据及结果
f2算法的时间复杂度及改进
算法的时间复杂度:一元多项式的加法运算的时间复杂度为Om
)
减法运算的时间复杂度为Om
,其中m,
分别表示二个一元多项式的项
数。问题和改进思想:在设计该算法时,出现了一些问题,例如在建立链表时头指针的设立导致了之后运用到相关的指针时没能很好的移动指针出现了数据重复输出或是输出系统缺省值,不能实现算法。实现加法时该链表并没有向通常那样通过建立第三个链表来存放运算结果,而是再度利用了链表之一来进行节点的比较插入删除等操作。为了使输入数据按指数降序排列,可在数据的输入后先做一个节点r