一元多项式相加

版权声明:转载请说明去处,文章仅供学习参考 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);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38487155/article/details/86300784
今日推荐