一元多项式

、问题描述:

功能:设计一个一元多项式加法器。

输入并建立多项式,实现两个多项式的加法运算。

要求:

1) 界面友好,函数功能要划分好

2) 总体设计应画出流程图

3) 程序要加必要的注释

4) 要提供程序测试方案

5) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。


、问题的解决方案:

1) 多项式的表达:n,c1,e1,c2,e2,…cn,en,其中, n 是多项式项数,ci 和ei分别是第 i 项的系数和指数,序列按指数降序或者升序排列;

2)利用线性结构存储多项式的每一项。

3)多项式加法运算即转化为线性表的条件归并运算。


功能实现

一、设计流程:

任务设计分为三步:1、完成两个一元多项式相加;2、对序列进行排序;3、实现友好的人机交互。


二、方法构造

    步骤一:实现两个一元多项式相加,我的设计流程是,创建三个链表,依次储存第一个多项式的系数和指数,第二个多项式的系数和指数,两个多项式和/差 的系数和指数。

    如图所示:

插入函数的具体实现过程

(1) 当p结点的指数expn小于p2的指数expn就将p插入到p2的前面。


一元多项式_第1张图片

(2) 当p结点的指数exon等于p2的指数expn就将p和p2的系数加起来合并放到p2的位置上


一元多项式_第2张图片

(3) 当p结点的指数expn大于p2的指数expn就将p插入到p2的前面。


一元多项式_第3张图片

功能二输出多项式(A+B).主要的方法是建立一个新的链表C,将A和B合并并插入C链表中

(1) 比较A和B中的结点如果A中结点的指数大于B中结点的指数就将A中该结点插入到C链表中


一元多项式_第4张图片

(2)比较A和B中的结点如过A中结点的指数小于B中结点的指数就将B中该结点插入到C链表中


一元多项式_第5张图片

(3) 比较A和B中的结点如过A中结点的指数等于B中结点的指数就将A和B合并为一个结点插入到C中


一元多项式_第6张图片

这两个主要的功能就是这样实现的

   步骤二:对序列进行排序。

        排序方法我用的是冒泡排序,根据指数大小对每个结点进行排序,然后输出,这个排序方法我想大家应该都了解,就不多说了,想具体了解各种排序方法的同学,可进入visualgo.net这个网站深度学习(这个网站也是身边同学分享给我的);


   步骤三:实现良好的人机交互。

任何一个程序的设计都必须要有实用意义,否则毫无价值,任务要求是做一元稀疏多项式的加法计算器,但只能实现加法一个功能远远满足不了实用的要求,所以我们可以添加“减、乘、除”这三个功能。减法的功能实现和加法基本类似,只需修改一下运算方法就行了,乘除的计算量比较大,可以遍历第一个表的每个结点对第二个表每个结点进行‘乘/除’运算,应给会多出来很多数据,

数学基础还算可以的同学可以在下面自己进行探讨延伸。

你可能感兴趣的:(数据结构)