java实现一元多项式加法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/benzhaohao/article/details/79570892

思路:

多项式结点类描述:(Node结点,Linklist类的描述在创建单链表的文章已经实现)

public class PolynNode {
	public double coef;   //系数
	public int expn;      //指数
	public PolynNode(double coef,int expn){   //构造函数
		this.coef=coef;
		this.expn=expn;
	}
}

多项式类的描述:

import java.util.Scanner;
public class PolynList extends Linklist{    //多项式类继承Linklist单链表
	public PolynList(int n)throws Exception{  //创建多项式有序链表
		Scanner sc=new Scanner(System.in);   //构造用于输入的对象
		head.data=new PolynNode(0,-1);    //初始化头结点
		for(int i=0;i<n;i++){        //输入n个结点的数据域的值
			double coef=sc.nextDouble();   //系数值
			int expn=sc.nextInt();      //指数值
			insert(i,new PolynNode(coef,expn));   //插入到有序链表中
		}
	}
	//多项式加法,qa=qa+qb 利用两个多项式的结点构成“和多项式”,并返回LA
	public PolynList addPolynList(PolynList LA,PolynList LB)throws Exception{
		Node ha=LA.head;
		Node qa=LA.head.next;
		Node qb=LB.head.next;
		while(qa!=null&&qb!=null){
			PolynNode a=(PolynNode)qa.data;  //将Node类强制转换为PolyNode类
			PolynNode b=(PolynNode)qb.data;
			if(a.expn<b.expn){   //如果a的指数小于b的指数
				ha.next=qa;
				ha=qa;
				qa=qa.next;
			}
			else if(a.expn>b.expn){
				ha.next=qb;
				ha=qb;
				qb=qb.next;
			}
			else{
				double sum=a.coef+b.coef;
				if(sum!=0){
					a.coef=sum;
					ha.next=qa;
					ha=qa;
					qa=qa.next;
					qb=qb.next;
				}
				else{
					qa=qa.next;
					qb=qb.next;
				}
				}
		}
		ha.next=(qa!=null?qa:qb);   //插入剩余结点
		return LA;
	}
	public static void main(String[] args)throws Exception{
		System.out.println("输入多项式A各项的系数和指数");
		PolynList LA=new PolynList(4);
		System.out.println("输入多项式B各项的系数和指数");
		PolynList LB=new PolynList(3);
		LA.addPolynList(LA, LB);   //对多项式LA,LB求和,并赋给LA
		System.out.println("求和后多项式各项为");
		LA.display();  //打印LA中的项
	}
	public void display(){   //重载父类display()方法
		for(int i=0;i<length();i++){
		try{
				PolynNode e=(PolynNode)get(i);
				System.out.println("系数为"+e.coef+" 指数为"+e.expn);
			}catch(Exception e){
				e.printStackTrace();
			}
	}
	}	
}

运行结果:


猜你喜欢

转载自blog.csdn.net/benzhaohao/article/details/79570892