问题描述
题目来源:PTA 数据结构与算法题目集(中文)7-2 一元多项式的乘法与加法运算 (20 分)
一、程序结果
二、实现步骤与程序说明
1.问题分析
题目涉及稀疏多项式的运算,相较于顺序存储结构,采用链式存储结构更为灵活。
对应的数据结构定义为(同严蔚敏教材):
typedef struct PNode{
int coef;
int expn;
struct PNode *next;
}PNode, *Polynomial;
问题可拆分为:多项式的创建,多项式加法,多项式乘法,以及多项式的输出四个步骤,其中多项式的加法与乘法也可理解为和多项式与乘积多项式的创建过程,即前三个过程实现是相似的:
空 链 表 ⇒ 获 取 c o e f 、 e x p n 进 行 插 入 多 项 式 空链表\xRightarrow{获取coef、expn进行插入}多项式 空链表获取coef、expn进行插入多项式
因此,上述链表插入函数的实现是关键。
2.代码结构
主函数:
void Insert(int a,int e,Polynomial *P); //链表的插入
void CreatePolyn(Polynomial *P); //多项式的创建
Polynomial AddPolyn(const Polynomial P,const Polynomial Q);//多项式加法
Polynomial MultiPolyn(const Polynomial P,const Polynomial Q);//多项式乘法
void Print(Polynomial P); //多项式的输出
int main(){
Polynomial P,Q,S,M;
CreatePolyn(&P);
CreatePolyn(&Q);
S = AddPolyn(P,Q);
M = MultiPolyn(P,Q);
Print(M);
Print(S);
return 0;
}
链表的插入
函数参数:系数 a a a,指数 e e e;即将 a x e ax^e ax