連結串列-多項式相加-未完
阿新 • • 發佈:2020-10-26
如題:
節點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的時候,輸出應該有點問題。自行除錯。