西安郵電大学数据结构设计报告题 目: 多项式相乘院系名称: 计算机学院 专业名称: 软件工程班 级: 学生姓名: 学号(8 位): 指导老师: 设计起止时间:一. 设计目的以动态单链表为存储结构,使用排序等操作实现多项式的乘法运算二. 设计内容用一个单链表来表示一个一元多项式;在创建多项式的过程中,可以按指数的任意顺序输入,并且可在同一多项式中输入指数相同的多个项;在进行乘法操作之前,输出参加操作的两个多项式。要求输出的多项式按指数升序排列,同指数的多项合并,项数的正负号显示合理。 对已排序且合并了同指数项的两个多项式实现乘法操作,并输出结果;结果多项式要求以动态链表为存储结构,复用原多项式的结点空间;输出结果多项式要求按指数升序排列,同指数的多项要合并,项数的正负号要求显示合理。三.概要设计1.功能模块图; 2.各个模块详细的功能描述。多项式链表升序排序函数Polylist Polysort(Polylist head)根据幂次的高低排序的同时并合同类项,幂次相同的系数相加存入前项,释放合并项中后者空间,若系数相加和为 0 则释放两项空间。多项式创建函数Polylist creat()多项式相乘函数Polylist Polymul(Polylist LA,Polylist LB)输出函数void print(Polylist head)分三种情况:系数输出、符号输出、指数输出主函数 main()创建多项式 LA=creat()创建多项式 LB=creat()调用 Polysort( ) 排序调用 Polysort( ) 排序调 用 print() 输 出LA调 用 print() 输 出LB对多项式 LA,LB 相乘 LC=Polymul(LA,LB)调用 Polysort( ) 排序调 用 print() 输 出LC四.详细设计1.各功能函数的数据流程图 Y N N y y y y2.重点设计及编码(1)多项式链表升序排序函数Polylist Polysort(Polylist head){Polynode *first,*move,*p,*q; //first 移动指针 move 被移动项指针 p,q 临时指针q=head; p=head->next;if(p==NULL) return head; //推断链表是否为空;first=p->next;p->next=NULL;move=first;while(move!=NULL) //直接插入排序(链表排序){first=first->next; if(p->exp==move->exp) //推断待插入项指数是否与首项相等;{p->coef+=move->coef; //系数相加;free(move); //释放空间;if(p->coef==0) //若系数相加和为 0;{Polysort() 开始head==NULL ?first=p->next; p->next=NULL; move=first;p->coef+=move->coef; free(move);p->exp= =move-...