多项式运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
p
LA
0 -1 2 0 3 1 5 3 2 4 ∧
q
LB
0 -1 3 0 2 1 4 2 ∧
LC
0 -1 ∧
p
A
0 -1 2 0 3 1 5 3 2 4 ∧
q
B
0 -1 3 0 2 1 4 2 ∧
C
0 -1
5
0
∧
p
A
0 -1 2 0 3 1 5 3 2 4 ∧
q
B
0 -1 3 0 2 1 4 2 ∧
注意
• 无需按指数非递增或非递减的顺序输入各项。 • 依据输入数据建立的链表即为多项式,建立 链表时需做一些处理:
– 若当前输入的项的指数与已输入的项的指数相 等,则只需合并到该已输入的项中。 – 若合并后的项的系数为0,则将此项从链表中删 除。 – ……
注意: (1)输出多项式时,xk用x^k表示,并依指 数递增次序输出各项。例如,5x5应表示为 5x^5。 (2)输出的结果应符合数学中手写习惯。例 如,x不应输出为1x^1、-x不应输出-1x^1, 3x应输出为3.0x、-3x应输出-3.0x, x3不应 输出为1x^3,应输出x^3,系数为0的项不 应该在最后的结果中、x^0应该为常数项等。
多项式1输入完毕
多项式2输入完毕
显示多项式1
显示多项式2
+ _ *
提交实验报告
• 电子版实验报告(依据所给规范完成) • 源代码
主要模块
• 主程序main • 多项式创建:接收键盘输入的数据,建立有 序链表(指数递增) • 多项式的打印:输出链表(以多项式形式) • 两多项式的相加 • 两多项式的相减 • 两多项式的相乘 • 多项式的销毁
程序框架
main() { LinkList p1, p2, p3, p4, p5; // printf("输入多项式1(系数 指数):\n"); p1=CreatPolyn(); // printf("输入多项式2(系数 指数):\n"); p2=CreatPolyn(); // printf("\n多项式1:\n"); PrintPolyn(p1); // printf("\n多项式2:\n"); PrintPolyn(p2); // printf("\n多项式1 + 多项式2= \n"); p3=AddPolyn(p1, p2); PrintPolyn(p3); // printf("\n多项式1 - 多项式2= \n"); p4=SubstractPolyn(p1, p2); PrintPolyn(p4); // printf("\n多项式1 * 多项式2= \n"); p5=MultiplyPolyn(p1, p2); PrintPolyn(p5); }
struct pnode *next; //指向下一节点
} polynode;
coef
exp
next
例如:多项式 2 + 3X + 5X3 + 2X4 可表示为:
head
0 -1 2 0 3 1 5 3 2 4 ∧
多项式
2 + 3X + 5X3 + 2X4
3 + 2X + 4X2
相加
算法思想:
初始化;
While (两个链都没处理完) { if (指针指向当前节点的指数项相同)
{系数相加,如系数不为0在C链中加新的节点;
A、B链的指针均前移;} else
{以指数小的项的系数添入C链中的新节点;
指数小的相应链指针前移;} }
While(A链处理完)
{ 顺序处理B链;} While(B链处理完)
{ 顺序处理A链;}
输出
• • • • • 第1行显示输入的多项式1; 第2行显示输入的多项式2; 第3行显示多项式1+多项式2的结果; 第4行显示多项式1-多项式2的结果; 第5行显示多项式1*多项式2的结果;
输入 23 -1 2 30 12 00 -2 1 -3 3 -1 -1 00
输出 3.0+2.0x^3 -x^-1-2.0x-3.0x^3 -x^-1+3.0-2.0x-x^3 x^-1+3.0+2.0x+5.0x^3 -3.0x^-1-6.0x-2.0x^29.0x^3-4.0x^4-6.0x^6
实系数一元多项式问题
实验目的
• 实现实系数一元多项式的创建、打印、以及 两个一元多项式的加、减、乘运算。
– 选用单链表表示多项式,单链表中的结点就是 多项式中的项。
数 据 结 构
一元多项式的表示及相加 typedef struct node {
float coef;
int exp;
//系数
//指数
C
0 -1
5
0
5
1
∧
p
A百度文库
0 -1 2 0 3 1 5 3 2 4 ∧
q=NULL
B
0 -1 3 0 2 1 4 2 ∧
C
0 -1
5
0
5
1
4
2
∧
p
A
0 -1 2 0 3 1 5 3 2 4 ∧
q=NULL
B
0 -1 3 0 2 1 4 2 ∧
C
0 -1
5
0
5
1
4
2
5
3
A
0 -1 2 0 3 1 5 3
p=NULL
2 4 ∧
B
0 -1 3 0 2 1 4 2 ∧
q=NULL
C
0 -1
5
0
5
1
4
2
5
3
2
4
∧
多项式相乘举例
• 多项式A:项1+项2+项3 • 多项式A*多项式B
即 项1 *多项式B+项2 *多项式B+项3 *多项式B
数据输入
• 输入两个多项式的系数和指数。
– 每行上两个数(两数间空一格),分别是所创 建多项式中项(cxe)的系数c和指数e。当输入 的这两个数均为0时,表示该多项式系数、指 数输入完毕。