C++__一元多项式相加

  1. 问题描述

一元多项式每一项由系数Pi及x的指数i组成。若多项式按照升幂排列,则它由n+1个系数唯一确定,因此可以用一个线性表表示,其指数i隐藏在系数Pi的序号内。分别两个多项式A(x)、B(x)系数、指数所构成的表。输出为两多项式和C(x)所构成的链表。

  1. 设计思路

将B(x)加到A(x)后,形成C(x)。带有头结点的线性链表表示多项式A(x)、B(x),ha、hb分别指向A(x)、B(x)的头指针,p、q分别指向多项式第一项。比较p、q结点的指数项若p结点指数项小q结点指数项,则p所指结点为C(x)一项,p后移一个结点;若p指数项大于q指数项,则q所指结点为C(x)一项。若相等,则系数相加,为零则删去,否则修改系数并回收。所用变量包括线性链表头指针ha、hb,指针p、q。算码描述:

           ADD(ha,hb)

  1. p<-next(ha);q<-next(hb)
  2. pre<-ha;hc<_ha   //pre指向p的前驱,hc为C(x)头指针
  3. while(p!=nil)AND (q!=nil) do
  4. case
  5. EXP(p)<EXP(q):
  6. {pre<-p; p<-next(p)}
  7. EXP(p)=EXP(q):
  8. {X<-COFE(p)+COFE(q);
  9. If(x!=0) then {COFE(p)<-x;pre<-q}
  10. Else {next (pre)<-next(p);RET(p)}
  11. P<-next(pre);u<-q;q<-next(q);RET(u)}</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值