




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沏广/祟实验报告
课程名称:程序设计与数据结构指导老师:_成绩:
实验名称:一元多项式的加减运算实验类型:基础训练型同组学生姓名:
一、实验目的和要求(必填)二、实验内容和代码(必填)
三、代码缺陷及修正记录四、实验结果与分析(必填)
五、讨论、心得
一元多项式的加减运算
一、实验目的和要求
按照有序线性表的方式实现一元多项式的数据类型
二、实验内容和代码
【实验内容】
1、用数据结构的方法编程实现一元多项式的加减运算
2、一元多项式的乘法运算(选做)
3、课外阅读:秦九韶算法(霍纳算法)求解多项式
【实验代码】
Polynomial.h
structPolynomial
{
intcoef;
intexp;
structPolynomial*next;
);
structPolynomial*create();〃建立多项式
structPolynomial*insert(structPolynomial*head,structPolynomial*p);
voidadd(structPolynomial*pl,structPolynomial*p2);〃多项式相加运算
voidsub(structPolynomial*pl,structPolynomial*p2);〃多项式相减运算
voidprint(structPolynomial*p);
Polynomial.c
#include<stdio.h>
#include<stdlib.h>
#includenPolynomial.h"
structPolynomial*create()
(
structPolynomial*p,*q,*head;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
scanf_s("%d%d”,&p->coef,&p->exp);
head=NULL;
while(p->coef!=0||p->exp!=0)
(
head=insert(head,p);
scanO(n%d%d",&p->coef,&p->exp);
}
returnhead;
)
structPolynomial*insert(structPolynomial*head,structPolynomial*p)
、(
装structPolynomial*q,*ql,*q2;
q=(structPolynomial*)malloc(sizeof(structPolynomial));
订q->coef=p->coef;
q->exp=p->exp;
线q->next=NULL;
if(head==NULL)
(
head=q;
head->next=NULL;
returnhead;
}
q2=ql=head;
while(ql!=NULL)
(
while(ql->exp<p->exp)
(
q2=ql;
if(ql->next==NULL)
break;
ql=ql->next;
)
if(ql->exp==p->exp)
q1->coef=q1->coef+p->coef;
if(ql->coef==0)
(
if(ql==head)
(
head=head->next;
break;
}
else
(
q2->next=ql->next;
)
)
else
break;
)
elseif(q1->exp<p->exp)
(
ql->next=q;
break;
)
装else
(
订if(q2==head&&q2->exp>q->exp)〃如果不加q2->exp>q->exp会出现二义性
(
线q->next=head;
head=q;
break;
)
else
(
q2->next=q;
q->next=ql;
break;
)
)
)
returnhead;
);
voidadd(structPolynomial*pl,structPolynomial*p2)
(
structPolynomial*p,*q,*head;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
head=q=p;
while(pl!=NULL||p2!=NULL)
(
if(pl==NULL)
(
while(p2!=NULL)
(
q=p;//p的前一节点
p->exp=p2->exp;
p->coef=p2->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
p2=p2->next;
)
)
elseif(p2==NULL)
(
while(pl!=NULL)
(
q二p;
p->exp=pl->exp;
装p->coef=pl->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
订q->next=p;
pl=pl->next;
线}
)
else
(
if(pl->exp<p2->exp)
(
q二p;
p->exp=pl->exp;
p->coef=pl->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
pl=pl->next;
)
elseif(p1->exp==p2->exp)
(
q二p;
p->exp=pl->exp;
p->coef=p1->coef+p2->coef;
if(p->coef!=0)
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
pl=pl->next;
p2=p2->next;
)
else
(
pl=pl->next;
p2=p2->next;
)
)
else
{
q=p;
p->exp=p2->exp;
p->coef=p2->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
p2=p2->next;
)
装}
、)
订q->next=NULL;
print(head);
线);
voidsub(structPolynomial*pl,structPolynomial*p2)
(
structPolynomial*p,*q,*head;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
head=q=p;
while(pl!=NULL||p2!=NULL)
(
if(pl==NULL)
(
while(p2!=NULL)
(
q=p;
p->exp=p2->exp;
p->coef=-p2->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
p2=p2->next;
)
elseif(p2==NULL)
(
while(pl!=NULL)
(
q=p;
p->exp=pl->exp;
p->coef=pl->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
pl=pl->next;
)
)
else
(
if(pl->exp<p2->exp)
{
q=p;
p->exp=pl->exp;
p->coef=pl->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
pl=pl->next;
)
elseif(pl->exp==p2->exp)
(
q二p;
p->exp=pl->exp;
p->coef=pl->coef-p2->coef;
if(p->coef!=0)
(
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
pl=pl->next;
p2=p2->next;
)
else
(
pl=pl->next;
p2=p2->next;
else
q二p;
p->exp=p2->exp;
p->coef=-p2->coef;
p=(structPolynomial*)malloc(sizeof(structPolynomial));
q->next=p;
p2=p2->next;
q->next=NULL;
print(head);
);
voidprint(structPolynomial*p)〃将多项式打印到屏幕
(
structPolynomial*pl;
Pl=P;
if(p==NULL)
(
装printf("O\n");
return;
订}
while(pl!=NULL)
线{
if(pl==p)〃头结点输出时的情况
(
printf(H%d",pl->coef);
if(pl->exp!=0)
printf(uxA%du,pl->exp);
else
printf("");
I
else
(
if(p1->coef>0||pl->coef==0)
(
printf(M+%dH,pl->coef);
if(pl->exp!=0)
printf(uxA%dM,pl->exp);
else
printf("");
else
printf(H-%d",-pl->coef);
if(pl->exp!=0)
printf(uxA%dn,pl->exp);
else
printf(un);
pl=pl->next;
)
printf(u\nu);
)
UnaryPolynomial.c
#include<stdio.h>
#include<stdlib.h>
#includenPolynomial.h"
intmain()
装structPolynomial*pl,*p2;
printf(”请输入多项式A中x的系数及指数(输入00表示输入结束):\nn);
订pl=create();
printf(”请输入多项式B中x的系数及指数(输入00表示输入结束):\nn);
线p2=create();
printf(,,\nu);
printf(uA(x)=n);
print(pl);
printf("\nn);
printf("B(x)=n);
print(p2);
printf(u\n\nu);
printf(uA(x)+B(x)=");
add(pl,p2);
printf(u\n\nu);
printf(,'A(x)-B(x)=,');
sub(pl,p2);
printf("\n\nu);
system("pausen);
return0;
三、代码缺陷及修正记录
一开始运行时到一半会自动退出,但一步步调试又能得到正确结果,找不到原因所在,
最后加了system("pause")才可。
四、实验结果与分析
234234
当两一元多项式分别为A(x)=X+2X+3X+4X^B(X)=2X+3X+4X+4X,
|HF:\360Downloads\VS2017平常文〈筋瞰一元多项式B9M渝1复1\Debug\Project1.exe-□X
请输入多项式AWx的系数及指数(输入0。表示输入结束):
11
22
33
44
00
请输入多项式B中x的系数及指数(输入00表示输入结束):
21
32
43
44
00
A(x)=lx1+2x2+3x3+4x4
B(x)=2x1+3x2+4x3+4x4
A(x)+B(x)=3x1+5x2+7x3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60670-1:2024 RLV EN Boxes and enclosures for electrical accessories for household and similar fixed electrical installations - Part 1: General requirements
- 2025年度电商渠道拓展与营销合作合同范本
- 2025年度个人住房按揭贷款合同范本-@-1
- 2025年度肉羊屠宰加工企业战略合作框架合同4篇
- 班级历史文化月活动计划
- 2025年理发、美容服务合作协议书
- 以消费者为中心的品牌策略计划
- 幼儿园园所文化建设的教研活动计划
- 推动护理专科发展与提升的策略计划
- 教学目标达成情况分析计划
- GB/T 45177-2024人工光型植物工厂光环境技术规范
- 新教科版小学1-6年级科学需做实验目录
- 新HSK一至六级词汇表
- 现金调拨业务
- 企业公司行政人事管理组织架构图带照片
- GPIB控制VP-8194D收音信号发生器指令
- LF炉电热特性及供电制度_阎立懿
- 兰炭生产技术简明教程(共43页)
- 员工预支现金与费用报销流程
- 01-第一章运动学绪论PPT课件
- 安全生产标准化现场评审方案
评论
0/150
提交评论