1. 程式人生 > 實用技巧 >連結串列-多項式相加-未完

連結串列-多項式相加-未完

如題:

節點Node:

public class Node
{
    int xi, zhi;
    Node next;

    public Node()
    {
    }

    public Node(int x, int y)
    {
        xi = x;
        zhi = y;
    }

    public void show()
    {
        Node p = this;
        System.out.print("Node is:");
        while (p.next != null)
        {
            p 
= p.next; if (p.xi != 0)// 係數為0不參與輸出 { if (p.xi > 0 && p != this.next) { System.out.print("+"); } if(p.xi==-1) { System.out.print("-"); }
else if (p.xi != 1||p.zhi==0)//係數不為1,或者指數為0,都需要輸出係數 { System.out.print(p.xi); } if (p.zhi!=0)//指數不為0,則需要輸出x項。 { System.out.print("x^" + p.zhi); } } } } }

業務邏輯(錄入、相加)

import java.util.Scanner;


public class Bll
{
    public static void inputNode(Node x)
    {
        int a,b;
        Scanner scan=new Scanner(System.in);
        while(true)
        {
            System.out.println("輸入係數(0退出):");
            a=scan.nextInt();
            if(a==0)
            {
                //為每個多項式末尾新增一個“0x^-1”
                x.next=new Node(0, -1);
                break;
            }
            System.out.println("輸入指數:");
            b=scan.nextInt();
            x.next=new Node(a, b);
            x=x.next;
        }
        //scan.close();
    }
    public static void addNode(Node x,Node y)
    {
        Node p=x.next,t;
        y=y.next;
        do
        {
            if(y.zhi>p.zhi)
            {
                x.next=y;
                t=y.next;
                y.next=p;
                x=y;
                y=t;
            }
            else if(y.zhi==p.zhi)
            {
                p.xi+=y.xi;
                y=y.next;
            }
            else
            {
                x=p;
                p=p.next;
            }
        }
        while(p!=null && y!=null);
    }
}

主程式:

public class c1
{
    public static void main(String[] args)
    {
        Node a=new Node(),b=new Node();
        System.out.println("輸入第一個多項式:");
        Bll.inputNode(a);
        a.show();
        System.out.println("輸入第二個多項式:");
        Bll.inputNode(b);
        b.show();
        Bll.addNode(a, b);
        a.show();
    }
}

ps:出現常數項-1的時候,輸出應該有點問題。自行除錯。