java基于单链表存储结构的一元多项式求和运算
时间: 2023-08-20 10:05:11 浏览: 119
Java基于单链表存储结构的一元多项式求和运算可以通过以下步骤实现:
1. 定义一个节点类,包含三个属性:系数(coefficient)、指数(exponent)和下一个节点(next)的地址。
2. 定义一个单链表类,包含一个头节点(head)。
3. 创建两个一元多项式的单链表对象,分别存储两个多项式。
4. 对两个多项式的单链表进行遍历,将同一指数的项相加,并将结果存入一个新的单链表中。
5. 返回结果单链表对象。
具体实现可以参考以下Java代码:
```
public class Node {
public double coefficient; // 系数
public int exponent; // 指数
public Node next; // 下一个节点的地址
public Node(double coefficient, int exponent) {
this.coefficient = coefficient;
this.exponent = exponent;
this.next = null;
}
}
public class LinkedList {
public Node head; // 头节点
public LinkedList() {
this.head = new Node(0, 0); // 创建头节点
}
// 添加节点
public void addNode(double coefficient, int exponent) {
Node node = new Node(coefficient, exponent);
Node p = head;
while (p.next != null && p.next.exponent > exponent) {
p = p.next;
}
if (p.next != null && p.next.exponent == exponent) {
p.next.coefficient += coefficient;
} else {
node.next = p.next;
p.next = node;
}
}
// 多项式求和
public LinkedList add(LinkedList list) {
LinkedList result = new LinkedList();
Node p1 = this.head.next;
Node p2 = list.head.next;
while (p1 != null && p2 != null) {
if (p1.exponent > p2.exponent) {
result.addNode(p1.coefficient, p1.exponent);
p1 = p1.next;
} else if (p1.exponent < p2.exponent) {
result.addNode(p2.coefficient, p2.exponent);
p2 = p2.next;
} else {
double coefficient = p1.coefficient + p2.coefficient;
if (coefficient != 0) {
result.addNode(coefficient, p1.exponent);
}
p1 = p1.next;
p2 = p2.next;
}
}
while (p1 != null) {
result.addNode(p1.coefficient, p1.exponent);
p1 = p1.next;
}
while (p2 != null) {
result.addNode(p2.coefficient, p2.exponent);
p2 = p2.next;
}
return result;
}
}
```
使用时,可以先创建两个多项式的单链表对象,然后调用add方法求和,最后遍历结果单链表输出即可。
阅读全文