一元多项式加减乘除运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国计量学院实验报告
实验课程:算法与数据结构实验名称:一元二项式班级:学号:
姓名:实验日期: 2013-5-7
一.实验题目:
①创建2个一元多项式
②实现2个多项式相加
③实现2个多项式相减
④实现2个多项式相乘
⑤实现2个多项式相除
⑥销毁一元多项式
实验成绩:指导教师:
二.算法说明
①存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储
空间,只存储多项式中系数非零的项。链表中的每一个结点存放多项式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。
②加法算法
三.测试结果
四.分析与探讨
实验数据正确,部分代码过于赘余,可以精简。
五.附录:源代码
#include<>
#include<>
#include<>
typedef struct Polynomial
{
float coef;
int expn;
struct Polynomial *next;
}*Polyn,Polynomial;
出多项式a和b\n\t2.多项式相加a+b\n\t3.多项式相减a-b\n");
printf("\t4.多项式相除a*b\n\t5.多项式相除a/b\n\t6.销毁多项式\n");
printf("\t7.退出\n*********************************** ***********\n");
printf("执行:");
scanf("%d",&flag);
switch(flag)
{
case(1):
printf("多项式a:");PrintPolyn(pa); printf("多项式b:");PrintPolyn(pb);break;
case(2):
pc=AddPolyn(pa,pb);
printf("多项式a+b:");PrintPolyn(pc);
DestroyPolyn(pc);break;
case(3):
pd=SubtractPolyn(pa,pb);
printf("多项式a-b:");PrintPolyn(pd);
DestroyPolyn(pd);break;
case(4):
pf=MultiplyPolyn(pa,pb);
printf("多项式a*b:");PrintPolyn(pf);
DestroyPolyn(pf);break;
case(5):
DevicePolyn(pa,pb);
break;
case(6):
DestroyPolyn(pa);
DestroyPolyn(pb);
printf("成功销毁2个一元二项式\n");
printf("\n接下来要执行的操作:\n1 重新创建2个一元二项式 \n2 退出程序\n");
printf("执行:");
scanf("%d",&i);
if(i==1)
{
// Polyn
pa=0,pb=0,pc,pd,pf;//定义各式的头指
针,pa与pb在使用前付初值NULL
printf("请输入a的项数:");
scanf("%d",&m);
pa=CreatePolyn(pa,m);//
建立多项式a
printf("请输入b的项数:");
scanf("%d",&n);
pb=CreatePolyn(pb,n);//
建立多项式b
break;}
if(i==2)
return 0;
case(7):
return 0;
}
}
}
}