- 1、本文档共95页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《北京理工大学数据结构编程练习答案》.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
文档评论(0)