用Java数据结构的知识编写一个一元稀疏多项式的加法的程序,并且可以在主程序中输入多项式进行加法运算
时间: 2024-10-29 13:13:13 浏览: 16
在Java中,我们可以使用HashMap数据结构来表示一元稀疏多项式,因为稀疏多项式的特点就是大部分系数为0,所以使用哈希表可以节省存储空间。下面是一个简单的实现,包括两个函数,一个用于创建多项式,另一个用于计算两个多项式的加法:
```java
import java.util.HashMap;
class SparsePolynomial {
private HashMap<Integer, Integer> coefficients;
public SparsePolynomial() {
this.coefficients = new HashMap<>();
}
// 添加项到多项式
public void addTerm(int term) {
if (term != 0) {
coefficients.put(term, coefficients.getOrDefault(term, 0) + 1);
}
}
// 加法操作,将两个多项式相加
public void add(SparsePolynomial other) {
for (int term : other.coefficients.keySet()) {
coefficients.putIfAbsent(term, 0);
coefficients.put(term, coefficients.get(term) + other.coefficients.get(term));
}
}
// 输出多项式表示为字符串
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int term : coefficients.keySet()) {
int count = coefficients.get(term);
while (count-- > 0) {
sb.append(term).append("^").append(count).append(" + ");
}
}
return sb.substring(0, sb.length() - 3); // 去除最后一个"+"和空格
}
// 主程序入口点,接受用户输入并显示结果
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个多项式,形式如:1^2+3^4 (输入结束请输入'#'):");
while (true) {
String input = scanner.nextLine();
if (input.equals("#")) break;
SparsePolynomial poly1 = new SparsePolynomial();
for (String part : input.split("\\+")) {
String[] terms = part.trim().split("\\^");
int coefficient = Integer.parseInt(terms[0]);
int degree = terms.length == 1 ? 1 : Integer.parseInt(terms[1]);
poly1.addTerm(degree * coefficient);
}
System.out.println("请输入第二个多项式(同上格式),或输入'#'结束计算:");
String input2 = scanner.nextLine();
if (input2.equals("#")) break;
SparsePolynomial poly2 = new SparsePolynomial();
for (String part : input2.split("\\+")) {
String[] terms = part.trim().split("\\^");
int coefficient = Integer.parseInt(terms[0]);
int degree = terms.length == 1 ? 1 : Integer.parseInt(terms[1]);
poly2.addTerm(degree * coefficient);
}
poly1.add(poly2);
System.out.println("两个多项式的和为: " + poly1);
}
scanner.close();
}
}
```
这个程序首先从用户那里获取两个多项式的输入,然后逐项添加到各自的`SparsePolynomial`实例中,最后进行加法操作并打印出结果。注意,由于输入格式限制,这里只支持形如`1^2`、`3^4`这样的简单表达式。
阅读全文