- 问题描述
一元多项式每一项由系数Pi及x的指数i组成。若多项式按照升幂排列,则它由n+1个系数唯一确定,因此可以用一个线性表表示,其指数i隐藏在系数Pi的序号内。分别两个多项式A(x)、B(x)系数、指数所构成的表。输出为两多项式和C(x)所构成的链表。
- 设计思路
将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)
- p<-next(ha);q<-next(hb)
- pre<-ha;hc<_ha //pre指向p的前驱,hc为C(x)头指针
- while(p!=nil)AND (q!=nil) do
- case
- EXP(p)<EXP(q):
- {pre<-p; p<-next(p)}
- EXP(p)=EXP(q):
- {X<-COFE(p)+COFE(q);
- If(x!=0) then {COFE(p)<-x;pre<-q}
- Else {next (pre)<-next(p);RET(p)}
- P<-next(pre);u<-q;q<-next(q);RET(u)}</