Java中的多项式表示

时间:2016-08-16 16:41:46

标签: 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 个答案:

答案 0 :(得分:1)

if(head == null)部分的construct_poly方法中,只需更改

head=newnode; 
to this.head=newnode;

执行的原因是您要引用类变量多项代码头,即在链表的开头,但仅使用head(而不是this.head)编译器将其引用为作为参数传递的局部变量头。

所以我们使用 this.head 来引用调用对象的类变量。

请记住:局部变量的优先级始终高于全局变量。

此外,不需要其他部分的最后一行,即

temp=newnode;

不是必需的。

经过上述更改后,您的代码运行得非常好。