一元多項式相加
阿新 • • 發佈:2019-01-13
package Linear; /* * 一元多項式相加:ha指向表頭結點,hb指向表頭結點,將倆多項式相加,並加入p表。 * * 補充知識點: * 釋放p結點操作 1、Node t=p; t=null; */ public class C { public static void Add(multipleNode ha,multipleNode hb) { multipleNode p =ha.next; multipleNode pre=ha; //pre永遠指向p的前一結點 multipleNode q=hb.next; while(p!=null&&q!=null) { if (p.exp<q.exp) { //p指數小於q指數 pre=p; p=p.next; }else if(p.exp==q.exp) { //p指數等於q指數 int x=p.coef+q.coef; if(x==0) { //係數相加為0,刪除結點 pre.next=p.next; p=null; p=pre.next; }else { //相加不為0,將q點加入p表(即刪除q結點,p修改係數) p.coef=x; multipleNode t =q; q=q.next; t=null; } }else { //p指數大於q指數,將q加入p表(即將q結點插入在p結點之前) multipleNode t =q.next; q.next=p; pre.next=q; pre=q; q=t; } } if (q!=null) { p.next=q; } hb.next=null; hb=null; } public static void main(String[] args) { int[][] arrA=new int[][]{{1,2},{2,3}}; int[][] arrB=new int[][]{{1,1},{2,2}}; multipleNode A=NodeTool.CreateNodeList(arrA); multipleNode B=NodeTool.CreateNodeList(arrB); NodeTool.traverseWithHead(A); NodeTool.traverseWithHead(B); Add(A, B); NodeTool.traverseWithHead(A); NodeTool.traverseWithHead(B); } }