输出多项式,多项式相加,减
//我写过个JAVA的,小的,嘿嘿,作业啊,你参考一下吧:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
========================================================================================
目 的
用单链表实现多项式的加减法。
========================================================================================
内 容
本程序共包含2个 .java 文件和4个 .class 文件。
其中 Polynomial.java 包含3个类:public class Polynomial,class Literal,class LinkedListItr。
TheDriver.java 是Polynomial类的驱动程序,只包含1个main()函数。
========================================================================================
每个类的概述
----------------------------------------------------------------------------------------
1.Literal.class
只含3个成员变量和4个构造函数以及1个toString()函数。
content:多项式的一个项的系数, exponent:指数, next:指向下一个项。
构造函数没什么说的。
String toString():返回该项的字符串,用于后来的printList()。
----------------------------------------------------------------------------------------
2.LinkedListItr.class
与书本上的基本类似,便于表示指针的位置。
含1个Literal型的成员变量current,以及1个构造函数和4个自定义的函数。
current:当前指针指向的节点。
content()、exponent():分别返回current的系数和指数,用这2个函数是为了表示current的系数和指数时方便。
isPastEnd():当指针超过最后一个节点后,返回null,便于判断是否到达链表结尾。
advance():使指针下移一项。
----------------------------------------------------------------------------------------
3.Polynomial.class (public)
包含1个Literal型的成员变量header,指向表的第0项。
包含7个函数。
boolean isEmpty():如果表为空,返回true。
void makeEmpty():使链表为空。
LinkedListItr zeroth():返回header。
void insert(Literal x,LinkedListItr itr):在位置itr的后面插入项x。
void insertAtEnd(Literal x):在表尾插入项x,在驱动程序TheDriver中用到,用于构造链表。
void printList():输出形如 6X[12]+5X[7]+(-1)X[2] 的多项式,其中[]中的为项的系数。
public static Polynomial addTwoPolys(Polynomial poly1,Polynomial poly2):
我使用的是static方法,没有破坏参数列表中的poly1和poly2多项式,我觉得static更便于使用(不需创建对象实现该方法)。
创建了3个指针pointer1~3。
实现多项式加法的步骤:
(1)判断链表是否为空:若都为空,输出错误信息。
若其中一个为空,返回另一个链表。
若都不为空,goto(2)。
(2)无限循环检测指针状态,当2个指针都 isPastEnd() 时,跳出循环。
当有一个 isPastEnd() 时,pointer3指向另一个并不断 advance(),直到 isPastEnd()。
当2个都没 isPastEnd() 时,比较2指针指向的项的系数大小,让pointer3指向大的一项,然后和这个大的一项都 advance(),
然后再比较2指针系数大小,如此不断循环,直到break。
相加时要小心和为0的情况。
----------------------------------------------------------------------------------------
4.TheDriver.class
随便构造2个多项式,为了检测更完全些,长度不一样,而且有1项和为0。
先输出这2个多项式,相加之后再输出结果。
========================================================================================
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>