例:一元多项式的运算

$$
\begin{align}
P_n(x)&=p_0+p_1x+\cdots+p_nx^n
\
Q_m(x)&=q_0+q_1x+\cdots+q_mx^m
\end{align}
$$

通过线性表存储信息

$P_n(x)$ :

下标01···n
$p_0$$p_1$···$p_n$
$P_n(x)$

$Q_m(x)$ :

下标01···m
$q_0$$q_1$···$q_m$
$Q_m(x)$

运算示例

$R_n(x)=P_n(x)+Q_m(x)$
$线性表R=(p_0+q_0,\ p_1+q_1,\ \cdots)$

其中下标 0 的值为 $x^0$ 的系数;下标 1 的值为 $x^1$ 的系数,依次类推……

稀疏多项式的运算

(a) $A(x)=7+3x+9x^4+5x^{14}$

下标i0123
系数a[i]7 395
指数01414

(b) $B(x)=8x+11x^6-9x^9$

下标i012
系数b[i]811-9
指数169

$P_n(x)=p_1x^{e_1}+P_2x^{e_2}+\cdots+p_mx^{e_m}$
$线性表P=((p_1,e_1),(p_2,e_2),\cdots,(p_m,e_m))$

$线性表A=((7,0),(3,1),(9,4),(5,14))$
$线性表B=((8,1),(11,6),(-9,9))$

  • 创建一个新数组C
  • 分别从头遍历比较a和b的每一项
    • 指数相同,对应系数相加,若其和不为零,则在C中添加新项
    • 指数不相同,则将指数较小的项复制到C中
  • 一个多项式已遍历完毕时,将另一个剩余项依次复制到C中即可

(c) $C(x)=A(x)+B(x)$

下标i012345
系数c[i]711911-95
指数0146914

C 声明多大合适呢?

  • 顺序存储结构存在问题
    • 存储空间分配不灵活
    • 运算的空间复杂度高

总结

  • 线性表中的数据元素的类型可以为简单类型,也可以为复杂类型
  • 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序
  • 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

作者

3049874370@qq.com

相关文章

类C语言有关操作的补充(1)

C语言的动态内存规划 C++的动态存储分配 ...

读出全部

2.4 线性表的顺序表示和实现(2)

顺序表的特点 顺序表(元素)与数组(元素)特...

读出全部

1.1 计算机系统简介-a

现代计算机的多态性 把感应器嵌入和装备到电网...

读出全部

2.4 线性表的顺序表示和实现(1)

线性表的顺序表示又称为顺序存储结构或顺序映像...

读出全部