符号多项式的表示及其操作是线性表处理的典型用例。 一个一元多项式 Pn(x) 可以表示为 : Pn(x)=p0+p1x+p2x2+…+pnxn (最多有 n+1 项)它由 n+1 个系数唯一确定。
因此可用一个线性表 P 来表示:P = ( p0, p1, p2, …, pn ) 每一项的指数 i 隐含在其系数 pi 的序号里。
假设 Qm(x) 是一元 m 次多项式,同样可用线性表 Q 表示: Q = (q0, q1, q2, …, qm)
若 m < n,则两个多项式相加的结果 Rn(x)= Pn(x)+ Qm(x) 可用线性表 R 来表示: R = (p0+ q0, p1+ q1, p2+q2, …, pm+ qm, pm+1, …, pn)
但是只存储系数的方案对存在大量零系数的多项式并不适用。
例如: S(x) = 1 + 3x10000 + 2x20000
要用一个长度为 20001 的线性表来表示,表中仅有 3 个非零系数,会浪费大量存储空间。
若只存储非零系数项,则必须同时存储相应的指数。
一般一元 n 次多项式 (只表示非零系数项) 可写成:
其中 pi≠0 (i =1, 2, …, m),n = em > em-1 > … > e1 >= 0
用一个长度为 m 且每个数据元素有两个数据项(系数项和指数项)的线性表 (( p1, e1), ( p2, e2), …, ( pm, em)) 便可唯一确定多项式 Pn(x)。 对于 S(x) 类的多项式将大大节省空间。
所以这里我们选择链式存储结构。
例:假设多项式 A17(x)=7+3x+9x8+5x17 与 B8(x)=8x+22x7-9x8 已经用单链表表示,其头指针分别为 A 与 B, 如下图所示。
将两个多项式相加为 C17(x)=7+11x+22x7+5x17