2016-08-16 45 views
0

我想借助鏈表來表示一個多項式。這裏去我的代碼Java中的多項式表示法

import java.io.*; 
import java.util.*; 

public class Multiply_Poly 
{ 
    polynode head; 
    Multiply_Poly() 
    { 
     head=null; 
    } 

    public void construct_poly(polynode head,float coeff,int exp) 
    { 
     if(head==null) 
     { 
      polynode newnode = new polynode(coeff,exp); 
      head=newnode; 
      return; 
     } 
     else 
     { 
      polynode newnode = new polynode(coeff,exp); 
      polynode temp = head; 
      while(temp.next!=null) 
       temp=temp.next; 

      temp.next=newnode; 
      temp=newnode; 
     } 
    } 

    public void show_poly(polynode head) 
    { 
     if(head==null) 
      return; 

     else 
     { 
      while(head.next!=null) 
      { 
       System.out.print("(" + head.coeff + ")" + "x^" + "(" + head.exp + ")" + "+"); 
       head=head.next; 
      } 

      System.out.print("(" + head.coeff + ")" + "x^" + "(" + head.exp + ")"); 
     } 
    } 

    public static void main(String [] args) 
    { 
     Multiply_Poly m = new Multiply_Poly(); 
     m.construct_poly(m.head,12,5); 
     m.construct_poly(m.head,9,4); 
     m.construct_poly(m.head,26,3); 
     m.construct_poly(m.head,18,2); 
     m.construct_poly(m.head,10,1); 
     m.construct_poly(m.head,5,0); 

     m.show_poly(m.head); 
    } 
} 

class polynode 
{ 
    float coeff; 
    int exp; 
    polynode next; 

    polynode(float coeff,int exp) 
    { 
     this.coeff=coeff; 
     this.exp=exp; 
     next=null; 
    } 
} 

我想我的construct_poly功能不工作。這就是爲什麼show_poly函數返回null。 construct_poly中的其他部分是不是正確寫入?我的錯誤是什麼?

+1

你和'head'有一個命名衝突。從所有方法中刪除'head'參數。 – molbdnilo

+0

同樣的事情發生時,我用任何其他參數替換頭@molbdnilo –

+0

@SoumyaKantiNaskar想一想,當你給函數的參數賦值時會發生什麼。刪除'polynode'參數。你應該有'public void construct_poly(float coeff,int exp)'。你應該看看你最喜歡的Java書中關於類和對象的章節。 – molbdnilo

回答

1

的construct_poly方法,如果(頭== NULL)部分只是改變

head=newnode; 
to this.head=newnode; 

理由這樣做是要指即在你的鏈接開始你的類變量polynode頭列表,但只使用head(not this.head)編譯器將其引用爲作爲參數傳遞的局部變量頭。

所以我們使用this.head來引用調用對象的類變量。

注意:局部變量的優先級總是高於全局變量。

也沒有必要else部分即

temp=newnode; 

的最後一行是不需要的。

上述更改後,您的代碼運行得很好。