多项式加法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

班级:信息1301 姓名:胡苗苗

======== 实习报告一“PolyAdd ”演示程序==================

(一)、程序的功能和特点

功能:将两个多项式相加,利用单链表存储多项式,并实现多项式的加法。

特点:利用单链表进行多项式相加时,不生成新的结点,直接在原来的结点上运算。

(二)、程序中的算法设计

1.【逻辑结构与存储结构设计】

逻辑结构:存储多项式的的单链表是线性结构。

存储(物理)结构:存储多项式的的单链表是链式存储结构。

例如:

2.【基本操作设计】

①public booleaninsertBack(double c,int e)

给存储多项式的单链表的尾部插入一个结点

②给存储多项式的单链表中插入一个结点 新结点

3.【算法设计】

流程图:

算法描述:构造两个链表类s1,s2,头指针分别为ah,bh,从第一个结点开始比较:

(1)如果两个结点的多项式阶数相等,那么把两个系数相加,指数不变赋给s1的第一个结点,指针后移;

(2)如果s1的结点阶数小于s2的结点阶数,s1的指针ah后移,判断下一个结点阶数与s2当前阶数大小;

(3)如果s1的结点阶数大于s2,那么将s2的当前结点插入s1当前结点的前面。直到s1或s2的指针指向空。

判断s1或者s2指针是否指到末尾:

①若s2指针指空,那么结束程序。

②若s1指针指空,则把s1

的末尾指针指向s2剩余的部分。

4.【高级语言代码】

多项式加法:自身多项式和ob相加,和为自身

public void addPoly(linkListob) {

link ah=first; //自身的第一个结点

link bh=ob.first; //ob的第一个结点

link p,q; //辅助的指针,指向某个结点

//指针ah和bh都没有移到结束处

while(ah!=null&&bh!=null) {

if(ah.exp==bh.exp) { //阶数相同

ah.coef+=bh.coef; //改变自身结点系数

ah=ah.next; //自身单链表的当前指针后移

bh=bh.next; //多项式ob的当前指针后移}

else if(ah.exp

ah=ah.next; //自身结点不变,指针后移

else {

p=bh; //让p指向ob的当前结点

bh=bh.next; //多项式ob的当前指针后移

q=first; //把q指针移到ah的前驱结点

while(q.next!=ah) q=q.next;

q.next=p; //把p结点插在了ah的位置

p.next=ah; //把ah接到了p结点后

}

} //循环while结束

if(bh!=null) //如果多项式ob的当前指针没有到达尾部ah.next=bh; //把多项式ob的剩余部分挂在自身的最后}

(三)、程序的输入输出和运行结果截屏

输入:

输出:

相关文档
最新文档