package polynomial;
public class Polynomial {
Polynomial next;
double data; // 系数值
int power; // 幂值
public Polynomial(){
this(0.0, -1);
}
public Polynomial(double data, int power){
this.data = data;
this.power = power;
this.next = null;
}
public Polynomial(double data, int power, Polynomial next){
this.data = data;
this.power = power;
this.next = next;
}
public String toString(){
return "data = "+data+",power = "+power;
}
}
package polynomial;
// import java.util.InputMismatchException;
import java.util.Scanner;
public class Util
{
// Polynomial p;
Scanner input = new Scanner(System.in);
public Util()
{
// p = new Polynomial();
}
/**
* 1. 判断多项式中是否存在该幂数的项数
* @param power 幂数
* @param p 链表
* @return 是否存在power相同的项数
*
* complete
*/
private boolean locateElem(int power, Polynomial p)
{
Polynomial current = p.next;
/* // 不需要判断power是否小于0
if(power<0)
return false;
*/
while(current!=null)
{
if(current.power == power)
return true;
current = current.next;
}
return false;
}
/**
* 2.做相加的操作
* @param data
* @param power
* @param current
* @param previous
* @return
*/
private boolean addElem(double data, int power, Polynomial current, Polynomial previous)
{
if(power == current.power)
{
current.data = current.data + data;
if(0 == current.data && previous != null)
previous.next = current.next;
if(0 == current.data && previous == null)
current = current.next;
return true;
}
return false;
}
private void addAllElem(double data, int power, Polynomial p)
{
Polynomial current;
Polynomial previous;
current = p;
previous = p;
while(current!=null && power!=current.power)
{
previous = current;
current = current.next;
}
current.data = current.data + data;
if(0 == current.data && current!=previous) // 当current的next为0的时候和current为头节点
previous.next = current.next;
else
p = current.next;
}
private boolean subElem(double data, int power, Polynomial current, Polynomial previous)
{
if(power == current.powe