一元多项式相加

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);
	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值