文档详情

北京理工大学数结构编程练习答案.docx

发布:2019-01-17约5.45万字共95页下载文档
文本预览下载声明
1.一元多项式相加(10分) 成绩: 10 / 折扣: 0.8 题目说明: 编写一元多项式加法运算程序。要求用线性链表存储一元多项式(参照课本)。该程序有以下几个功能: 1. 多项式求和 输入:输入三个多项式,建立三个多项式链表Pa、Pb、Pc (提示:调用CreatePolyn(polynomial P,int m)。 输出:显示三个输入多项式Pa、Pb、Pc、和多项式Pa+Pb、多项式Pa+Pb+Pc (提示:调用AddPolyn(polynomial Pa, polynomial Pb), 调用PrintPolyn(polynomial P))。 0. 退出 输入: 根据所选功能的不同,输入格式要求如下所示(第一个数据是功能选择编号,参见测试用例): 1 多项式A包含的项数,以指数递增的顺序输入多项式A各项的系数(整数)、指数(整数) 多项式B包含的项数,以指数递增的顺序输入多项式B各项的系数(整数)、指数(整数) 多项式C包含的项数,以指数递增的顺序输入多项式C各项的系数(整数)、指数(整数) 0 ---操作终止,退出。 输出: 对应一组输入,输出一次操作的结果(参见测试用例)。 1 多项式输出格式:以指数递增的顺序输出: 系数,指数,系数,指数,系数,指数,参见测试用例。零多项式的输出格式为0,0 0 无输出 #includeiostream #includestdlib.h using std::cin; using std::cout; using std::endl; struct date { int a; int b; struct date* pnext; }; typedef struct date DATE; typedef struct date* PDATE; void output(PDATE p) { int f=0; p=p-pnext; while(p!=NULL) { if(p-a!=0) { f=1; coutp-a,p-b; if(p-pnext==NULL) coutendl; else cout,; } p=p-pnext; } if(f==0) cout0,0endl; } void add(PDATE a,PDATE b,PDATE c) { PDATE p1,p2,p3; p1=a; p2=b; p3=c; if(p1!=NULL) p1=p1-pnext; //skip head if(p2!=NULL) p2=p2-pnext; while((p1!=NULL)(p2!=NULL)) { if(p1-bp2-b) { p3-pnext=(PDATE)malloc(sizeof(DATE)); p3=p3-pnext; p3-a=p2-a; p3-b=p2-b; p3-pnext=NULL; p2=p2-pnext; } else if(p1-bp2-b) { p3-pnext=(PDATE)malloc(sizeof(DATE)); p3=p3-pnext; p3-a=p1-a; p3-b=p1-b; p3-pnext=NULL; p1=p1-pnext; } else { p3-pnext=(PDATE)malloc(sizeof(DATE)); p3=p3-pnext; p3-a=p1-a+p2-a; p3-b=p1-b; p3-pnext=NULL; p1=p1-pnext; p2=p2-pnext; } }//end while if(p1==NULL) p3-pnext=p2; if(p2==NULL) p3-pnext=p1; } int main() { int flag; int n; PDATE P[6]={NULL}; PDATE p=NULL; for(int i=0;i6;i++) { P[i]=(PDATE)malloc(sizeof(DATE)); P[i]-a=0; P[i]-b=0; P[i]-pnext=NULL; } cinflag; if(flag==1) { for(int i=1;i4;i++) { p=P[i]; cinn; while(n--!=0) { p-pnext=(PDATE)malloc(sizeof(DATE)); p=p-pnext; c
显示全部
相似文档