java - 使用链表的多项式加法 // Java
问题描述
我的数据结构课程有一个作业。在作业中,我们必须使用链表来实现多项式加法。我想我已经搞定了,但是 eclipse 给了我一个空指针异常。我的问题是 add 方法,尽管我包含了整个类的上下文。乘以我将在之后解决..请帮助。
class PolynomialLinkedList{
private static class PNode{
private int coe;
private int exp;
private PNode next;
public PNode(int c, int e){
this(c, e, null);
}
public PNode(int c, int e, PNode n){
coe = c;
exp = e;
next = n;
}
public void setCoe(int c){ coe = c;}
public void setExp(int e){ exp = e;}
public void setNext(PNode n){ next = n;}
public int getCoe(){ return coe;}
public int getExp(){ return exp;}
public PNode getNext(){ return next;}
}
private PNode first;
private PNode last;
public PolynomialLinkedList(){
first = last = null;
}
public PolynomialLinkedList(int c, int e){
PNode tempn = new PNode(c, e);
first = last = tempn;
}
public void print(){
if (first == null){
System.out.println();
return;
}
PNode temp = first;
String ans = "";
while (temp != null){
if (temp.getCoe() > 0) {
if (temp != first) ans = ans + " + ";
ans = ans + temp.getCoe();
}
else if (temp.getCoe() < 0) ans = ans + " - " + temp.getCoe() * -1;
if (temp.getExp() != 0){
ans = ans + "X^" + temp.getExp();
}
temp = temp.getNext();
}
System.out.println(ans);
}
public PolynomialLinkedList add(PolynomialLinkedList s){
PolynomialLinkedList sum = new PolynomialLinkedList();
PNode temp1 = this.first;
PNode temp2 = s.first;
PNode tempAns = new PNode(0,0);
if(temp1.exp != temp2.exp) {
while(temp1.exp > temp2.exp) {
tempAns.setCoe(temp1.coe);
tempAns.setExp(temp1.exp);
temp1 = temp1.getNext();
tempAns = sum.first.getNext();
}
while(temp1.exp < temp2.exp) {
tempAns.setCoe(temp2.coe);
tempAns.setExp(temp2.exp);
temp2 = temp2.getNext();
tempAns = sum.first.getNext();
}
}
else if(temp1.exp == temp2.exp) {
while(temp1.exp == temp2.exp) {
tempAns.setCoe((temp1.coe + temp2.coe));
tempAns.setExp(temp1.exp);
temp1 = temp1.getNext();
temp2 = temp2.getNext();
tempAns = sum.first.getNext();
}
}
return sum;
}
public PolynomialLinkedList multiply(PolynomialLinkedList s){
PolynomialLinkedList product = new PolynomialLinkedList();
//implement this method
return product;
}
}
解决方案
推荐阅读
- java - 如何复制二维数组 使用循环,将考试 1 和 2 的所有分数复制到新的二维数组中。(不包括 -1 值)
- docker - 离线构建docker镜像
- css - 如何在不剪切嵌入式视频的情况下更改嵌入式 TikTok 小部件的高度?
- r - 使用 purrr::pwalk 从 tibble 创建多个闪亮的 observeEvents
- powershell - PowerShell 副本项
- json - JOLT:复制键值和过滤器数组
- excel - 使用日历日期选择器将选项卡重命名为支付期间
- android - setDatasource MediaPlayer 与 contentUri 时出错
- vba - 如何将组合框值加载到 Outlook VBA 中的 CC 字段?
- json - 通过 JSON URL 在 QGIS 中可视化实时气象观测