📅  最后修改于: 2023-12-03 15:22:27.191000             🧑  作者: Mango
这个Java程序实现了使用链表添加两个多项式的功能,通过输入两个多项式的系数和指数来构建多项式,然后将两个多项式相加并输出结果。
该程序通过定义一个Node类来实现链表,该节点包含多项式的系数和指数,并定义addNode方法来添加节点。另外,还定义了addPoly方法实现多项式的相加。
/**
* 节点类
*/
class Node {
int coefficient;
int exponent;
Node next;
public Node(int coefficient, int exponent) {
this.coefficient = coefficient;
this.exponent = exponent;
}
}
/**
* 多项式类
*/
class Polynomial {
Node head;
/**
* 添加节点
*/
public void addNode(int coefficient, int exponent) {
Node newNode = new Node(coefficient, exponent);
if (head == null) {
head = newNode;
} else {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
}
/**
* 相加两个多项式
*/
public Polynomial addPoly(Polynomial p1, Polynomial p2) {
Polynomial sum = new Polynomial();
Node temp1 = p1.head;
Node temp2 = p2.head;
while (temp1 != null && temp2 != null) {
if (temp1.exponent == temp2.exponent) {
int c = temp1.coefficient + temp2.coefficient;
sum.addNode(c, temp1.exponent);
temp1 = temp1.next;
temp2 = temp2.next;
} else if (temp1.exponent > temp2.exponent) {
sum.addNode(temp1.coefficient, temp1.exponent);
temp1 = temp1.next;
} else if (temp1.exponent < temp2.exponent) {
sum.addNode(temp2.coefficient, temp2.exponent);
temp2 = temp2.next;
}
}
while (temp1 != null) {
sum.addNode(temp1.coefficient, temp1.exponent);
temp1 = temp1.next;
}
while (temp2 != null) {
sum.addNode(temp2.coefficient, temp2.exponent);
temp2 = temp2.next;
}
return sum;
}
/**
* 打印多项式
*/
public void printPoly() {
Node temp = head;
while (temp != null) {
System.out.print(temp.coefficient + "x^" + temp.exponent + " ");
temp = temp.next;
}
System.out.println();
}
}
public class Main {
public static void main(String[] args) {
Polynomial p1 = new Polynomial();
Polynomial p2 = new Polynomial();
// 添加多项式1
p1.addNode(2, 3);
p1.addNode(3, 2);
p1.addNode(4, 0);
// 添加多项式2
p2.addNode(3, 4);
p2.addNode(1, 3);
p2.addNode(1, 1);
// 计算多项式和
Polynomial sum = p1.addPoly(p1, p2);
System.out.print("多项式1: ");
p1.printPoly();
System.out.print("多项式2: ");
p2.printPoly();
System.out.print("相加后的多项式: ");
sum.printPoly();
}
}
代码中定义了Node类和Polynomial类,其中Node类中包含了多项式的系数和指数,Polynomial类中包含了添加节点、相加多项式、打印多项式的方法。在main函数中,我们首先创建了两个多项式,然后添加节点并计算它们的和,最后输出结果。
该Java程序实现了使用链表添加两个多项式的功能,通过定义Node类和Polynomial类,实现了添加节点、相加多项式、打印多项式的基本操作。这种使用链表的方式既适用于多项式加法,也适用于其它类似的算法问题。