41. (合并链表) 已知两个链表 AN={a1,a2,...an}, BN={b1,b2,...bm}, 将其合并
为一个链表 CN={a1,b1,a2,b2,...}
42. (算术表达式求值) 输入一个由数字、+,-,*,/ 及括号组成的算术表达式,
求其值。
43. 对于次数很高,但项目很少的多项式,可用链表来表示。
例如:X^1000-76*X^76+3*X^3-7可表示为
┌─┬──┬─┐ ┌──┬─┬─┐ ┌─┬─┬─┐ ┌─┬─┬──┐
│1 │1000│ ┼→│-76 │78│ ┼→ │3 │3 │ ┼→│-7│0 │ NIL│
└─┴──┴─┘ └──┴─┴─┘ └─┴─┴─┘ └─┴─┴──┘
在此方式下,编程完成两个多项式的加法与乘法。
44. (一元多项式加法) 实现两个整系数一元多项式的加法。例如, 对于多项式
5*X^6+4*X^3-7*X^4+1 与多项式 50*X^2+4*X, 运算结果为:
5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。
程序要求:键盘输入多项式的各项系数及指数,每项系数及指数为一组数据(系
数及指数之一可为零),以'0,0'结束一个多项式的输入,结果按降幂排列,同类
项要合并(指数最大不超过30)。
上例第一式的输入为: 5,6
4,3
-7,4
1,0
0,0
输出结果应为:5*x^6-7*x^4+4*x^3+50*x^2+4*x+1.
45. (数列的最小代价) 给定一个正整数序列,例如:4,1,2,3, 不改变数的位置把
它们相加, 并且由括号来标记每一次加法所得到的和。例如:((4+1)+(2+3))=
((5)+(5))=10. 除去原数4、1、2、3之外,其余都为中间结果,如:5,5,10, 将中
间结果相加,得到:5+5+10=20, 数 20 称为此数列的一个代价。对于另一种算法:
(4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到数列的另一个代价为:3+6+10=19.
若给出 N 个数的数列,求出此数列的最小代价。