顺序表应用之多项式求和

上课布置的作业中只有思路和注释,具体下载地址见之前博客中的数据结构课程资源,这里给出解答

	public static SeqList polyAdd(SeqList list1, SeqList list2) {
		//result存放结果
		SeqList result = new SeqList();
		//pos1指向当前list1元素的位置,这个位置会不断变化,初始值为1,pos2则指向当前list2元素的位置
		int pos1 = 1, pos2 = 1;
		int len1 = list1.getLength();
		int len2 = list2.getLength();
		
		//还有用到其他变量,在这里声明这些变量,你意识到要用到这些变量时再来声明
		PElem e1, e2, e3;
		int exp1, exp2;
		
		while (pos1 <= len1 && pos2 <= len2) {
			//e3为要放置在result中的新项,该项目前的系数和幂都是默认值0
			e3 = new PElem();

			//取出list1中第pos1个元素出来,赋值给e1,取出list2中第pos2个元素出来,赋值给e2
			e1 = (PElem) list1.getElement(pos1);
			e2 = (PElem) list2.getElement(pos2);
			
			//取出e1中的幂,e2中的幂,来作比较
			exp1 = e1.getExp();
			exp2 = e2.getExp();
			//如果e1的幂>e2的幂,则将e1中的系数和幂分别赋值给e3中的系数和幂,且pos1++,即指向后一个位置,并且将e3添加(调用add)到result中
			//如果e1的幂<e2的幂,则将e2中的系数和幂分别赋值给e3中的系数和幂,且pos2++,即指向后一个位置,并且将e3添加(调用add)到result中
			//如果e1的幂==e2的幂,则将e1中的系数加上e2的系数赋值给e3中的系数,e1的幂赋值给e3的幂,且pos1++,pos2++,即都指向后一个位置,并且将e3添加(调用add)到result中
					
			if (exp1 > exp2) {
				e3.setCoefficent(e1.getCoefficent());
				e3.setExp(exp1);
				pos1++;
			} else if (exp1 == exp2) {
				e3.setCoefficent(e1.getCoefficent() + e2.getCoefficent());
				e3.setExp(exp1);
				pos1++;
				pos2++;
			} else {
				e3.setCoefficent(e2.getCoefficent());
				e3.setExp(exp2);
				pos2++;
			}
			result.add(e3);
		}

		
		while (pos1 <= len1) { //意味着list1还没有结束,那么将list1剩余各项的系数和幂赋值到到e3项中,并且将e3添加(调用add)到result中
			e3 = new PElem();
			e1 = (PElem) list1.getElement(pos1);			
			e3.setCoefficent(e1.getCoefficent());
			e3.setExp(e1.getExp());
			result.add(e3);
			pos1++;
		}

		while (pos2 <= len2) {//意味着list2还没有结束,那么将list2剩余各项的系数和幂赋值到到e3项中,并且将e3添加(调用add)到result中
			e3 = new PElem();
			e2 = (PElem) list2.getElement(pos2);			
			e3.setCoefficent(e2.getCoefficent());
			e3.setExp(e2.getExp());
			result.add(e3);
			pos2++;
		}
		return result;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值