一元多项式的加法减法乘法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建农林大学计算机与信息学院
课程设计报告
课程名称:数据结构
课程设计题目:一元多项式的加法减法乘法的实现姓名:
系:软件工程系
专业:软件工程专业
年级:2014
学号:
指导教师:***
职称:副教授
完成起止日期:2016.6.5 - 2016.7.1
2016年07月1日
福建农林大学计算机与信息学院课程设计结果评定
目录
一、问题分析和任务定义 (1)
二、程序设计内容 (1)
三、程序调试与测试 (7)
四、实验心得 (9)
五、程序编码 (9)
一、问题分析及任务定义
顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。
【问题描述和基本要求】设有一元多项式Am(x)和Bn(x).
Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm
Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn
请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×Bn(x)。
要求:
1) 首先判定多项式是否稀疏
2) 分别采用顺序和动态存储结构实现;
3) 结果M(x)中无重复阶项和无零系数项;
4) 要求输出结果的升幂和降幂两种排列情况
二、课程设计的内容
2.1函数
多项式创建函数PolyNode *Creatpoly()
多项式输出函数void Prin_poly(PolyNode *h)
多项式升序排列函数void Insortup(PolyNode *h)
多项式降序排列函数void Insortdown(PolyNode *h)
多项式合并函数void UnitePoly(PolyNode *h)
多项式相乘函数PolyNode *polymuti(PolyNode *h1,PolyNode *h2)
多项式相加函数PolyNode *addition(PolyNode *ha, PolyNode *hb)
多项式相减函数PolyNode *subduction (PolyNode *ha, PolyNode *hb)
2.2设计各个模块的流程图
(1)main()
(3)void Insortdown(PolyNode *h)
(4) PolyNode *polymuti(PolyNode *h1,PolyNode *h2)
(5)void UnitePoly(PolyNode *h)
(6) PolyNode *addition(PolyNode *ha, PolyNode *hb)
开始
三、程序调试与测试
相加结果
相减结果
相乘结果
四、实验心得
在本次课程设计中,我明白了理论应与实际相结合,上机练习是提高编程能力最有效的办法,这次实验提高了我编写大型程序的能力以及查阅资料并从中获得有效资料的能力。这次课程设计加深了我对数据结构的进一步理解。
五、程序编码
实验程序:
#include
#include
#include
typedef struct Node
{
int coef;//系数
int exp;//指数
struct Node *next;
}PolyNode;
PolyNode *Creatpoly()//创建多项式的单链表
{
PolyNode *h,*p,*q;
h=(PolyNode *)malloc(sizeof(PolyNode));
p=h;
p->next=NULL;
printf("请输入多项式的系数及其指数a b,当系数输入0时停止输入\n");
q=(PolyNode *)malloc(sizeof(PolyNode));
scanf("%d %d",&q->coef,&q->exp);
while(q->coef!=0)
{
p->next=q;
p=q;
q=(PolyNode *)malloc(sizeof(PolyNode));
scanf("%d %d",&q->coef,&q->exp);
}
p->next=NULL;
return(h);
}
void Prin_poly(PolyNode *h)//将多项式输出函数
{
PolyNode *p;
p=h->next;
while(p!=NULL)
{
if(p->coef>0&&p!=h->next)
{
if(p->exp>0)
printf("+%dx^%d",p->coef,p->exp);
else if(p->exp<0)
printf("+%dx^(%d)",p->coef,p->exp);
else
printf("+%d",p->coef);
}
else if(p->coef<0&&p!=h->next)
{
if(p->exp>0)
printf("%dx^%d",p->coef,p->exp);
else if(p->exp<0)
printf("%dx^(%d)",p->coef,p->exp);
else
printf("%d",p->coef);
}
else
{
if(p->exp>0)