(数据结构)一元多项式相加:
题目说明:
编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。该程序有以下几个功能:
- 多项式求和
输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc
(提示:调用CreatePolyn(polynomial &P,int m)。
输出:显示三个输入多项式Pa、Pb、Pc、和多项式Pa+Pb、多项式Pa+Pb+Pc
(提示:调用AddPolyn(polynomial &Pa, polynomial Pb), 调用PrintPolyn(polynomial P))。
- 退出
输入:
根据所选功能的不同,输入格式要求如下所示(第一个数据是功能选择编号,参见测试用例):
1
多项式A包含的项数,以指数递增的顺序输入多项式A各项的系数(整数)、指数(整数)
多项式B包含的项数,以指数递增的顺序输入多项式B各项的系数(整数)、指数(整数)
多项式C包含的项数,以指数递增的顺序输入多项式C各项的系数(整数)、指数(整数)
0 ---操作终止,退出。
输出:
对应一组输入,输出一次操作的结果(参见测试用例)。
1 多项式输出格式:以指数递增的顺序输出: <系数,指数>,<系数,指数>,<系数,指数>,参见测试用例。零多项式的输出格式为<0,0>
0 无输出
测试用例1:
测试输入:
1↵
2↵
1 1 2 2↵
2↵
1 1 2 2↵
2↵
1 1 2 2↵
期待输出:
<1,1>,<2,2>↵
<1,1>,<2,2>↵
<1,1>,<2,2>↵
<2,1>,<4,2>↵
< 3,1>,<6,2>↵
测试用例2:
测试输入:
1↵
2↵
6 3 8 6↵
2↵
3 4 4 8↵
3↵
1 1 5 5 9 9↵
期待输出:
<6,3>,<8,6>↵
< 3,4>,<4,8>↵
<1,1>,<5,5>,<9,9>↵
<6,3>,< 3,4>,<8,6>,<4,8>↵
<1,1>,<6,3>,< 3,4>,<5,5>,<8,6>,<4,8>,<9,9>↵
测试用例3:
测试输入:
1↵
2↵
1 1 2 2↵
2↵
-1 1 -2 2↵
2↵
1 1 2 2↵
期待输出:
<1,1>,<2,2>↵
<-1,1>,<-2,2>↵
<1,1>,<2,2>↵
<0,0>↵
<1,1>,<2,2>↵
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int coef;
int exp;
struct node *next;
}*polynomial,Polynomial;
void CreatePolyn(polynomial P, int m)
{
polynomial p1 = P;
for(int i = 0; i < m; i++)
{
polynomial pnew = (polynomial)malloc(sizeof(