首页 > 解决方案 > 使用链表的多项式加法 // 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;
    }

}

标签: javadata-structureslinked-listpolynomialspolynomial-math

解决方案


推荐阅读