java怎么实现多项式相加

avatar
作者
猴君
阅读量:0

在 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+1 Polynomial 2: x^3+4x^2+2x+3 Result: 3x^4+3x^3+9x^2+2x+4 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!