這是使用鏈接列表添加多項式的代碼。使用鏈接列表添加多項式
public class LinkedPolynomial{
private Node first=new Node(0,0);
private Node last=first;
private static class Node{
int coef;
int exp;
Node next;
Node(int coef,int exp){
this.coef=coef;
this.exp=exp;
}
}
private LinkedPolynomial(){}
public LinkedPolynomial(int coef,int exp){
last.next=new Node(coef,exp);
last=last.next;
}
//return c=a+b
public LinkedPolynomial plus(LinkedPolynomial b){
LinkedPolynomial a = this;
LinkedPolynomial c = new LinkedPolynomial();
Node x=a.first.next;
Node y=b.first.next;
while(x!=null || y!=null){
Node t=null;
if(x==null){
t=new Node(y.coef,y.exp);
y=y.next;
}
else if(y==null){
t=new Node(x.coef,x.exp);
x=x.next;
}
else if(x.exp>y.exp){
t=new Node(x.coef,x.exp);
x=x.next;
}
else if {
t=new Node(y.coef,y.exp);
y=y.next;
}
else{
int coef=x.coef+y.coef;
int exp=x.exp;
x=x.next;
y=y.next;
if(coef==0)
continue;
t=new Node(coef,exp);
}
c.last.next=t;
c.last=c.last.next;
}
return c;
}
public static void main (String args[]){
LinkedPolynomial zero=new LinkedPolynomial(0,0);
LinkedPolynomial p1=new LinkedPolynomial(4,3);
}
}
在該方法中plus()
可以什麼用
LinkedPolynomial a = this;
LinkedPolynomial c = new LinkedPolynomial();
Node x=a.first.next;
Node y=b.first.next;
做有人請向我解釋什麼是a.first.next;
什麼是LinkedPolynomial
。它是一個節點嗎?每個LinkedPolynomial
都有第一個也是最後一個?
有人可以向我解釋這些。
是否有意讓LinkedPlynomial和LinkedPolynomial?我不清楚你是否想要兩個不同的課程,或者這是一個糟糕的重新打字工作。 –
這幾乎肯定是一個錯字。 – Ben
@sam_rox,看看LinkedPolynomial類的定義,它非常簡單。它意味着包含一個多項式,如「x^2 + 2x + 3」,每個節點包含一個不同的項。 – Ben