版权声明:转载请说明去处,文章仅供学习参考 https://blog.csdn.net/qq_38487155/article/details/86300784
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);
}
}