定义结点类

public class PolyNode {/*** 定义结点系数域*/private int coef;/*** 定义结点指数域*/private int exp;/*** 定义结点后继引用域*/private PolyNode next;/*** 无参数构造器* 构造空结点*/public PolyNode() {this.next = null;}/*** 有参数构造器* 初始化系数、指数* @param coef* @param exp*/public PolyNode(int coef, int exp) {super();this.coef = coef;this.exp = exp;}public int getCoef() {return coef;}public void setCoef(int coef) {this.coef = coef;}public int getExp() {return exp;}public void setExp(int exp) {this.exp = exp;}public PolyNode getNext() {return next;}public void setNext(PolyNode next) {this.next = next;}}

对应单链表的实现

public class PolynomialList {/*** 头引用*/protected PolyNode first;/*** 尾插法实现构造器* @param initialList*/public PolynomialList(String[] initialList) {//头引用初始化为头结点first = new PolyNode();//初始化尾引用,实现未插入PolyNode rear = first;for (int i = 0; i < initialList.length; i++) {//以逗号分离系数、指数String[] polyInfo = initialList[i].split(",");int coef = Integer.parseInt(polyInfo[0]);int exp = Integer.parseInt(polyInfo[1]);//生成多项式结点PolyNode node = new PolyNode(coef, exp);rear.setNext(node);rear = node;}}public void printpolynomial() {PolyNode node = first;StringBuilder str = new StringBuilder();while (node != null) {if (node.getCoef() != 0) {str.append(node.getCoef() + "x^" + node.getExp());//System.out.print();if (node.getNext() != null) {str.append(" + ");} else {str.append(".");}}node = node.getNext();}System.out.println(str);}}

多项式操作类

public class Polynomial {public PolynomialList addPolynomial(String[] initialA, String[] initialB) {//初始化一元多项式A、B的单链表PolynomialList polyA = new PolynomialList(initialA);PolynomialList polyB = new PolynomialList(initialB);//初始化工作引用pre、pPolyNode pre = polyA.first, p = pre.getNext();//初始化工作引用qPolyNode q = polyB.first.getNext();PolyNode qTemp;while (p != null && q != null) {//第一种情况if (p.getExp() < q.getExp()) {pre = p;p = p.getNext();} else if (p.getExp() > q.getExp()) {   //第二种情况qTemp = q.getNext();pre.setNext(q);q.setNext(p);q = qTemp;} else {    //第三种情况//系数相加p.setCoef(p.getCoef() + q.getCoef());//系数为0if (p.getCoef() == 0) {pre.setNext(p.getNext());p = pre.getNext();} else {    //系数不为0pre = p;p = p.getNext();}q = q.getNext();}}if (q != null) {//将q连接到第一个链表之后pre.setNext(q);}return polyA;}}

测试

public class PolynomialTester {public static void main(String[] args) {String[] initialA = {"3,0", "3,1", "3,4"};String[] initialB = {"3,0", "3,2", "3,3", "4,7"};Polynomial polynomial = new Polynomial();PolynomialList list = polynomial.addPolynomial(initialA, initialB);list.printpolynomial();}}

运行结果

6x^0 + 3x^1 + 3x^3 + 3x^4 + 4x^7.

【Java】链表求解一元多项式加法相关推荐

  1. java链表实现一元多项式的合并同类项以及加法

    上课的作业:利用java数据结构的知识表示一元多项式,以及实现一元多项式的加法运算以及合并同类项 链表节点类: package PloyItem;public class Lnode implemen ...

  2. java 单链表一元多项式_java单链表实现一元多项式加法和乘法运算

    设有一个一元多项式  f(x)=∑aixi  ,我们要用一个单链表将它表示出来,并实现它的加和乘运算.多项式的每一项放在一个结点中,每个结点中放两个信息,即每一项的系数和幂.在这里我们用有头结点的链表 ...

  3. 多项式加法 java 链表_多项式加法,用单链表实现。

    ---恢复内容开始--- #include #include typedef struct PolyNode *Polynomial; struct PolyNode{ int coef;//系数 i ...

  4. 单链表存储一元多项式[IMUT 数据结构实验]

    题目 [问题描述] 利用单链表存储一元多项式. [基本要求] 实现以下基本操作: (1)从键盘输入一元多项式的信息,建立一元多项式. (2)实现两个一元多项式相加,并输出和多项式. 分析 题目说是用单 ...

  5. 一元多项式加法c语言,C语言一元多项式加法.doc

    C语言一元多项式加法 //C语言数据结构_一元多项式加法#include #include #include #define OK 1#define ERROR 0typedef int Status ...

  6. C语言链表求解多项式乘法问题

    C语言链表求解多项式乘法问题 解决多项式乘法问题最容易想到的就是将乘法运算转换为加法运算.从p1的第一项开始,依此乘以p2的每一项,合并同类项后放入结果多项式中.然而项数太多时,合并同类项的过程过于复 ...

  7. 数据结构之链表创建一元多项式,求一元多项式之和

    数据结构之链表创建一元多项式,求一元多项式之和 前言 对于一元多项式,我们完全可以利用线性表P(a0,a1,a2,-,an)表示,这样的线性表在求两个多项式相加等操作时确实简单,但是多于如下的多项式: ...

  8. java矩阵加法_在java中的数组加法?

    我到目前为止有一个程序要求用户选择一些元素.该程序然后要求用户选择数量由元素数量指示的次数.我将如何使用数组以及while或for循环找到这组数字的方差.我在高中时没有什么特别的感觉.下面是我当前的代 ...

  9. java使用计算器完成加法、减法运算

    java使用计算器完成加法.减法运算 package demo03;/*** 使用计算器完成加法.减法运算*/ public class Calculator {//成员变量private Strin ...

最新文章

  1. 多个CALayer的联动
  2. Linux下实现apache代理tomcat
  3. DedeCms如何调用Discuz论坛主题等数据方法总结
  4. BZOJ 1103: [POI2007]大都市meg
  5. MySQL索引相关的数据结构和算法
  6. Problem G. Pandaria(线段树合并 + Kruskal 重构树)
  7. jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器
  8. 双拓扑排序 HDOJ 5098 Smart Software Installer
  9. MTK 驱动开发(54)---MTK-thermal.conf温度参数修改的方法
  10. c++如何实现对硬盘的操作_如何使用Python实现自动化点击鼠标和操作键盘?
  11. vue 父刷新子_vue.js从父级中更新子组件数据
  12. anaconda配置python_interpreter报错_MAC系统下SublimeText3 Python环境配置参考
  13. js面向对象写法及栈的实现
  14. rtc校准算法_CRC校验算法的实例解析
  15. 批量检查pdb数据库某些蛋白质的pdb文件是否存在
  16. 如何终止运行matlab,matlab终止运行命令
  17. 16进制是否能整除 求余的运算
  18. mac软件拖到dock,重启后显示问号?,的解决方法
  19. 2 OsgEarth中实现PBR材质流程总结
  20. 【动态规划】数字三角形c语言

热门文章

  1. 【热修复】Andfix源码分析
  2. 程序包管理器控制台 Add-Migration 用法
  3. 蓝桥杯第七届省赛JAVA真题----压缩变换
  4. 查找算法——折半查找(JAVA)
  5. linux版的navicat提示丢失scilexer.dll
  6. php background-image,css background-image属性怎么用
  7. android webview 获取 title,【报Bug】app webview 安卓机 title显示问题
  8. java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制
  9. 大一计算机导论期中考试,大一计算机导论试题
  10. kibana下载安装