我想借助链表来表示多项式。这是我的代码
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中的其他部分是不是写得不正确?我的错是什么?
答案 0 :(得分:1)
在 if(head == null)部分的construct_poly方法中,只需更改
head=newnode;
to this.head=newnode;
执行的原因是您要引用类变量多项代码头,即在链表的开头,但仅使用head(而不是this.head)编译器将其引用为作为参数传递的局部变量头。
所以我们使用 this.head 来引用调用对象的类变量。
请记住:局部变量的优先级始终高于全局变量。
此外,不需要其他部分的最后一行,即
temp=newnode;
不是必需的。
经过上述更改后,您的代码运行得非常好。