北京理工大学数结构编程练习答案.docx
文本预览下载声明
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
显示全部