java多项式相加的和_java 实现多项式相加相乘

import java.util.LinkedList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Scanner;

class Term {

private int exp; //指数 exponent

private int coef;//系数 coefficient

private String symbol ="X";

public Term(int coef, int exp){

setExp(exp);

setCoef(coef);

}

public void setExp(int exp){

this.exp = exp;

}

public void setCoef(int coef){

this.coef = coef;

}

public int getExp(){

return exp;

}

public int getCoef(){

return coef;

}

public String toString(){

String s = coef+"";

s += symbol;

s += "^" + exp;

return s;

}

}

class ExponentCompare implements Comparator{

public int compare(Term node1, Term node2){

if (node1.getExp()

return 1;

if (node1.getExp()>node2.getExp())

return -1;

return 0;

}

}

class Polynomial{

LinkedList polynomial;

public Polynomial(){ //构造方法

polynomial = new LinkedList();

}

// 多项式 p1, p2 相加 ,方法 返回相加的结果

public Polynomial add(Polynomial p1, Polynomial p2){

Polynomial p = new Polynomial();

for (int i=0;i

Term node = p2.search(p1.polynomial.get(i).getExp());

if (node==null)

p.addTerm(p1.polynomial.get(i).getCoef(), p1.polynomial.get(i).getExp());

else{

int n = node.getCoef() + p1.polynomial.get(i).getCoef();

p.addTerm(n ,p1.polynomial.get(i).getExp());

}

}

return p;

}

// 多项式 p1, p2 相乘 ,方法 返回相乘的结果

public Polynomial multiply(Polynomial p1, Polynomial p2){

Polynomial p = new Polynomial();

for (int i=0;i

for (int j=0;j

p.addTerm(p1.polynomial.get(i).getCoef()*p2.polynomial.get(j).getCoef(),

p1.polynomial.get(i).getExp() + p2.polynomial.get(j).getExp() );

return p;

}

public Term search(int n){ //查询指数为n的元素。查询不到,返回null

int size = polynomial.size();

for (int i=0;i

if ( polynomial.get(i).getExp() == n)

return polynomial.get(i);

return null;

}

public void addTerm(int coefficient, int exponent){

Term node = search(exponent);

if (node==null){

Term term = new Term(coefficient,exponent);

polynomial.add(term);

Collections.sort(polynomial, new ExponentCompare() );

} else{

node.setCoef(node.getCoef() + coefficient);

}

}

public String toString(){

String s = polynomial.get(0).toString();

for (int i=1;i

s += "+" + polynomial.get(i);

return s;

}

}

public class Test{

public static void main(String args[]){

Polynomial poly1 = new Polynomial();

Polynomial poly2 = new Polynomial();

Scanner input = new Scanner(System.in);

int i =1, co=0,ex=0;

System.out.println("注意:每一个多项式的数据输入完毕时,将系数项 输入0值。");

System.out.println("输入第一个多项式的数据");

while (true) {

System.out.print("第 " + i + " 项系数 (若键入 0,则终止这个多项式的数据输入):");

co = input.nextInt();

if (co==0) break;

System.out.print("第 " + i++ + " 项指数:");

ex = input.nextInt();

poly1.addTerm(co,ex);

}

System.out.println("输入的第一个多项式:" + poly1);

System.out.println("输入第二个多项式的数据");

i=1;

while (true) {

System.out.print("第 " + i + " 项系数 (若键入 0,则终止这个多项式的数据输入):");

co = input.nextInt();

if (co==0) break;

System.out.print("第 " + i++ + " 项指数:");

ex = input.nextInt();

poly2.addTerm(co,ex);

}

System.out.println("输入的第二个多项式:" + poly2);

System.out.println("这两个多项式之和:" + poly1.add(poly1,poly2));

System.out.println("这两个多项式的乘积:" + poly1.multiply(poly1,poly2));

}

}

输出:

注意:每一个多项式的数据输入完毕时,将系数项 输入0值。

输入第一个多项式的数据

第 1 项系数 (若键入 0,则终止这个多项式的数据输入):6

第 1 项指数:1

第 2 项系数 (若键入 0,则终止这个多项式的数据输入):5

第 2 项指数:0

第 3 项系数 (若键入 0,则终止这个多项式的数据输入):0

输入的第一个多项式:6X^1+5X^0

输入第二个多项式的数据

第 1 项系数 (若键入 0,则终止这个多项式的数据输入):4

第 1 项指数:1

第 2 项系数 (若键入 0,则终止这个多项式的数据输入):3

第 2 项指数:0

第 3 项系数 (若键入 0,则终止这个多项式的数据输入):0

输入的第二个多项式:4X^1+3X^0

这两个多项式之和:10X^1+8X^0

这两个多项式的乘积:24X^2+38X^1+15X^0

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值