Java链表练习实现一元多项式的加法
来源:互联网 发布:log4j.xml 输出sql 编辑:程序博客网 时间:2024/05/18 00:33
链表的实现在之前写过了,就不再写了
将链表的数据域赋值为多项式结点类
多项式结点类:
package polynomialOfOneIndeterminate;public class PolynNode {public double coef;//系数public int expn;//指数public PolynNode(double coef,int expn) {this.coef=coef;this.expn=expn;}}
多项式类:
package polynomialOfOneIndeterminate;import java.util.Scanner;import com.sun.javafx.font.freetype.HBGlyphLayout;import com.sun.org.apache.bcel.internal.generic.AALOAD;import linearList.LinkList;import linearList.Node;//多项式类继承单链表public class PolynList extends LinkList {// 创建多项式有序链表public PolynList(int n) throws Exception {head.data = new PolynNode(0, -1);// 初始化头结点Scanner sc = new Scanner(System.in);// 构造用于输入的对象for (int i = 1; i <= n; i++) {double coef = sc.nextDouble();int expn = sc.nextInt();insert(new PolynNode(coef, expn));// 插入到有序链表}}public void insert(PolynNode pn) throws Exception{int j=0;while(j<length()){//与有序链表中的已有项进行指数比较PolynNode e=(PolynNode)get(j);if(pn.expn<e.expn){break;}j++;}insert(j, pn);//调用父类的插入函数}//判定函数,比较指数,a小于b返-1,a等于b返回0,a大于b返回1;public int cmp(PolynNode a,PolynNode b){//a和b的指数相比较if(a.expn>b.expn){return 1;}else if(a.expn==b.expn){return 0;}else {return -1;}}//多项式加法,Pa=Pa+Pb,利用两个多项式的结点构成“和多项式”,并返回LApublic PolynList addPolyn(PolynList LA,PolynList LB){Node ha=LA.head;//ha指向新形成链表的尾结点Node qa=LA.head.next;//qa指向LA中需要计算的当前项Node qb=LB.head.next;//qb指向LB中需要计算的当前项while(qa!=null&&qb!=null){PolynNode a=(PolynNode)qa.data;PolynNode b=(PolynNode)qb.data;switch (cmp(a, b)) {case -1:ha.next=qa;ha=qa;qa=qa.next;break;case 0:double sum=a.coef+b.coef;if(sum!=0.0){a.coef=sum;ha.next=qa;ha=qa;qa=qa.next;qb=qb.next;}else {qa=qa.next;qb=qb.next;}break;case 1:ha.next=qb;ha=qb;qb=qb.next;break;}}ha.next=(qa.next==null)?qb:qa;//插入剩余结点return LA;}//重载父类public void 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();}}}public static void main(String[] args) throws Exception{Scanner sc=new Scanner(System.in);System.out.println("请输入A多项式的项数:");int na=sc.nextInt();System.out.println("请分别输入A多项式的系数和指数:");PolynList LA=new PolynList(na);System.out.println("请输入B多项式的项数:");int nb=sc.nextInt();System.out.println("请分别输入A多项式的系数和指数:");PolynList LB=new PolynList(nb);LA=LA.addPolyn(LA, LB);LA.display();}}
示例运行:
请输入A多项式的项数:
5
请分别输入A多项式的系数和指数:
3 0
4 1
7 8
2 18
1 30
请输入B多项式的项数:
3
请分别输入A多项式的系数和指数:
5 1
6 3
-7 8
系数为:3.0指数为0
系数为:9.0指数为1
系数为:6.0指数为3
系数为:2.0指数为18
系数为:1.0指数为30
0 0
- Java链表练习实现一元多项式的加法
- 链表实现一元多项式加法
- 【数据结构】C++链表实现一元多项式的加法
- 一元多项式的乘法与加法运算【Java实现--通过单项链表实现队列】
- 用链表实现一元多项式的加法运算
- 一元多项式加法与乘法运算链表实现
- 顺序结构、动态链表结构下的一元多项式的加法的实现。
- 顺序结构、动态链表结构下的一元多项式的加法、减法等的实现
- polynomial 一元多项式加法实现
- 链表一元多项式计算器的实现(Java语言描述)
- 一元多项式的加法C++
- java单链表实现一元多项式加法和乘法运算
- java 链表实现多项式加法!
- 多项式加法的Java实现
- 一元多项式的加法(java实现)——浙大数据结构(陈越)
- 一元多项式的加法和乘法运算(Java实现)——浙大数据结构(陈越)
- C语言:用链表实现一元多项式的加法
- 【数据结构_链表_List_1040】一元多项式加法运算的实现
- HDU 1711 Number Sequence(KMP)
- NOJ 1323 穷举n位二进制数
- 指针的知识点
- 文章标题
- matlab 中一些常见的函数1
- Java链表练习实现一元多项式的加法
- Java/JSP中使用JDBC连接SQL Server 2005
- 【css层叠】css优先级,权重和层叠
- Brain Burst
- 商品订购及货物采购信息系统(需求分析)
- [翻译]WebKit在Windows上的建立
- Java设计模式之-桥接模式
- MVP/MVVP
- 2-sat(求最小字典序 hdu 1814)