c语言多项式乘法.ppt
文本预览下载声明
多项式乘法 流程分析 模块分析 模块分析: 主函数设计 数据类型声明 实现函数 实现函数 实现函数 实现函数PolyMuliply() 实现函数PolyMultiply() * * 问题描述: 通过键盘输入,建立两个多项式,实现多项式的乘法运算。 要求: 使用单链表完成算法。 初始化 创建多项式单链表Pa 创建多项式单链表Pb 打印多项式Pa 打印多项式Pb 用Pc表示Pa和Pb乘积 打印多项式Pc 首先需要设计如下的模块(函数): 1、初始化:初始化单链表,构造表头结点。函数头部: LinkList InitList_L ( ) 2、通过键盘输入创建多项式单链表:函数头部:void MakePoly_L (LinkList L)说明:以幂递增的次序输入多项式系数和幂,幂为负数时输入结束。根据输入建立多项式单链表 3、打印打印多项式:函数头部:void PrintPoly_L (LinkList L )说明:L为要打印的单链表的表头指针。 4、多项式乘法:函数头部: LinkList PolyMultiply_L ( LinkList Pa, LinkList Pb )说明:Pa,Pb为要进行相乘的两个多项式,按幂递增的顺序存储。乘积结果用新的单链表存储,并返回表头结点指针。 void main(){ LinkList Pa,Pb,Pc ; Pa= InitList_L (); Pb= InitList_L (); MakePoly_L(Pa); MakePoly_L(Pb); Pc= PolyMultiply_L(Pa,Pb); printf(“Pa:”); PrintPoly_L(Pa); printf(“Pb:”); PrintPoly_L(Pb); printf(“Pc:”); PrintPoly_L(Pc); } typedef struct { float coef ; int expn ;} term ,ElemType ; typedef struct LNode { ElemType data; struct LNode *next; } LNode , *LinkList ; LinkList InitList_L ( ) { LinkList head ; head = (LNode *) malloc( sizeof( LNode ) ); head-next = NULL; return (head);} void MakePoly_L(LinkList L ){ int expn ; float coef ; LinkList p,q ; q=L; printf(Input coef and expn,expn=-1 exit!\n); scanf(%f%d,coef,expn) ; while(expn=0){ p=(LinkList)malloc(sizeof(LNode)); p-next=NULL; (p-data).coef=coef ; (p-data).expn=expn ; q-next=p ; q=p; scanf(%f%d,coef,expn); }} void PrintPoly_L (LinkList L ){ LinkList p ; term e ; p=L-next; if (p) { e=p-data; printf(%.2fx^%d,e.coef,e.expn); for(p=p-next ; p ; p=p-next ){ e=p-data ; if(e.coef0) printf(+%.2fx^%d,e.coef,e.expn); else printf(%.2fx^%d,e.coef,e.expn); } } else printf(0); printf(\n);} 为了实现多项式相乘算法,需要两个辅助函数协助完成算法: LinkList AddPolyn(LinkList Pa,LinkList Pb) 说明:多项式Pa和Pb相乘,使用现有结点构造乘积多项式,其头结点通过函数值返回。 LinkList MultOneTerm(LinkList R,Link
显示全部