java怎么实现多项式相加

   2025-02-15 5690
核心提示:在 Java 中,可以使用数组或链表来表示多项式,然后通过遍历多项式的每一项,将相同指数的项相加得到最终结果。以下是一种使用链

在 Java 中,可以使用数组或链表来表示多项式,然后通过遍历多项式的每一项,将相同指数的项相加得到最终结果。

以下是一种使用链表表示多项式的实现方式:

public class PolynomialNode {    int coefficient;    int exponent;    PolynomialNode next;        public PolynomialNode(int coefficient, int exponent) {        this.coefficient = coefficient;        this.exponent = exponent;        this.next = null;    }}public class Polynomial {    private PolynomialNode head;        public Polynomial() {        this.head = null;    }        public void addTerm(int coefficient, int exponent) {        PolynomialNode newNode = new PolynomialNode(coefficient, exponent);                if (head == null) {            head = newNode;        } else {            PolynomialNode current = head;            PolynomialNode previous = null;                        while (current != null && current.exponent > exponent) {                previous = current;                current = current.next;            }                        if (current != null && current.exponent == exponent) {                current.coefficient += coefficient;            } else {                newNode.next = current;                                if (previous != null) {                    previous.next = newNode;                } else {                    head = newNode;                }            }        }    }        public Polynomial add(Polynomial polynomial) {        Polynomial result = new Polynomial();                PolynomialNode node1 = this.head;        PolynomialNode node2 = polynomial.head;                while (node1 != null && node2 != null) {            if (node1.exponent > node2.exponent) {                result.addTerm(node1.coefficient, node1.exponent);                node1 = node1.next;            } else if (node1.exponent < node2.exponent) {                result.addTerm(node2.coefficient, node2.exponent);                node2 = node2.next;            } else {                int sum = node1.coefficient + node2.coefficient;                                if (sum != 0) {                    result.addTerm(sum, node1.exponent);                }                                node1 = node1.next;                node2 = node2.next;            }        }                while (node1 != null) {            result.addTerm(node1.coefficient, node1.exponent);            node1 = node1.next;        }                while (node2 != null) {            result.addTerm(node2.coefficient, node2.exponent);            node2 = node2.next;        }                return result;    }        public String toString() {        StringBuilder sb = new StringBuilder();                PolynomialNode current = head;        boolean isFirstTerm = true;                while (current != null) {            if (current.coefficient != 0) {                if (current.coefficient > 0 && !isFirstTerm) {                    sb.append("+");                }                                sb.append(current.coefficient);                                if (current.exponent > 1) {                    sb.append("x^").append(current.exponent);                } else if (current.exponent == 1) {                    sb.append("x");                }                                isFirstTerm = false;            }                        current = current.next;        }                return sb.toString();    }}

使用示例:

public class Main {    public static void main(String[] args) {        Polynomial polynomial1 = new Polynomial();        polynomial1.addTerm(3, 4);        polynomial1.addTerm(2, 3);        polynomial1.addTerm(5, 2);        polynomial1.addTerm(1, 0);                Polynomial polynomial2 = new Polynomial();        polynomial2.addTerm(1, 3);        polynomial2.addTerm(4, 2);        polynomial2.addTerm(2, 1);        polynomial2.addTerm(3, 0);                Polynomial result = polynomial1.add(polynomial2);                System.out.println("Polynomial 1: " + polynomial1);        System.out.println("Polynomial 2: " + polynomial2);        System.out.println("Result: " + result);    }}

输出结果:

Polynomial 1: 3x^4+2x^3+5x^2+1Polynomial 2: x^3+4x^2+2x+3Result: 3x^4+3x^3+9x^2+2x+4

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言