顺序链式一元多项式加法减法乘法运算的实现Word文档格式.docx
- 文档编号:1172738
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:90.11KB
顺序链式一元多项式加法减法乘法运算的实现Word文档格式.docx
《顺序链式一元多项式加法减法乘法运算的实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《顺序链式一元多项式加法减法乘法运算的实现Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
{
floatcoef;
//系数
intexpn;
//指数
}term,elemType;
termterms[MAXSIZE];
//线性表中数组元素
intlast;
//指向线性表中最后一个元素位置
}SeqList;
typedefSeqListpolynomial;
1.3基本操作函数说明
polynomial*Init_Polynomial();
//初始化空的多项式
intPloynStatus(polynomial*p)
//判断多项式的状态
intLocation_Element(polynomial*p,termx)
在多项式p中查找与x项指数相同的项是否存在
intInsert_ElementByOrder(polynomial*p,termx)
//在多项式p中插入一个指数项x
intCreatePolyn(polynomial*P,intm)
//输入m项系数和指数,建立表示一元多项式的有序表p
charcompare(termterm1,termterm2)
//比较指数项term1和指数项term2
polynomial*addPloyn(polynomial*p1,polynomial*p2)
//将多项式p1和多项式p2相加,生成一个新的多项式
polynomial*subStractPloyn(polynomial*p1,polynomial*p2)
//多项式p1和多项式p2相减,生成一个新的多项式
polynomial*mulitPloyn(polynomial*p1,polynomial*p2)
//多项式p1和多项式p2相乘,生成一个新的多项式
voidprintPloyn(polynomial*p)
//输出在顺序存储结构的多项式p
1.4程序源代码
#include<
stdlib.h>
stdio.h>
iostream.h>
#defineNULL0
#defineMAXSIZE20
voidprintPloyn(polynomial*p);
if(p==NULL)
{
return-1;
}
elseif(p->
last==-1)
return0;
else
return1;
}
polynomial*Init_Polynomial()
polynomial*P;
P=newpolynomial;
if(P!
=NULL)
P->
last=-1;
returnP;
returnNULL;
voidReset_Polynomial(polynomial*p)
if(PloynStatus(p)==1)
p->
inti=0;
if(PloynStatus(p)==-1)
while(i<
=p->
last&
&
p->
terms[i].expn!
=x.expn)
i++;
if(i>
p->
last)
intj;
if(p->
last==MAXSIZE-1)
cout<
<
"
Thepolymisfull!
endl;
j=p->
last;
while(p->
terms[j].expn<
x.expn&
j>
=0)
terms[j+1]=p->
terms[j];
j--;
terms[j+1]=x;
last++;
termx;
if(PloynStatus(P)==-1)
if(m>
MAXSIZE)
printf("
顺序表溢出\n"
);
请依次输入%d对系数和指数...\n"
m);
for(inti=0;
i<
m;
i++)
{
scanf("
%f%d"
&
coef,&
expn);
x.coef=coef;
x.expn=expn;
if(!
Location_Element(P,x))
{
Insert_ElementByOrder(P,x);
}
}
return1;
if(term1.expn>
term2.expn)
return'
>
'
;
elseif(term1.expn<
='
inti,j,k;
i=0;
j=0;
k=0;
if((PloynStatus(p1)==-1)||(PloynStatus(p2)==-1))
polynomial*p3=Init_Polynomial();
=p1->
j<
=p2->
switch(compare(p1->
terms[i],p2->
terms[j]))
case'
:
p3->
terms[k++]=p1->
terms[i++];
break;
terms[k++]=p2->
terms[j++];
if(p1->
terms[i].coef+p2->
terms[j].coef!
{
terms[k].coef=p1->
terms[j].coef;
terms[k].expn=p1->
terms[i].expn;
k++;
}
i++;
j++;
p3->
returnp3;
inti;
if((PloynStatus(p1)!
=1)||(PloynStatus(p2)!
=1))
p3->
last=p2->
for(i=0;
terms[i].coef=-p2->
terms[i].coef;
terms[i].expn=p2->
p3=addPloyn(p1,p3);
intk;
polynomial**p=newpolynomial*[p2->
last+1];
for(k=0;
k<
k++)
p[k]=Init_Polynomial();
p[k]->
last=p1->
for(j=0;
j<
j++)
p[k]->
terms[j].coef=p1->
terms[j].coef*p2->
terms[k].coef;
p[k]->
terms[j].expn=p1->
terms[j].expn+p2->
terms[k].expn;
p3=addPloyn(p3,p[k]);
if(p->
terms[i].coef>
0&
i>
0)
cout<
+"
else
x^"
cout<
voidmenu()
\t\t*******数据结构综合性实验*********"
\t\t***一、多项式的加、减、乘法运算***"
\t\t*******1.多项式创建*********"
\t\t*******2.多项式相加*********"
\t\t*******3.多项式相减*********"
\t\t*******4.多项式相乘*********"
\t\t*******5.清空多项式*********"
\t\t*******0.退出系统*********"
\t\t******请选择(0-5)********"
\t\t***********************************"
voidmain()
intsel;
polynomial*p1=NULL;
polynomial*p2=NULL;
polynomial*p3=NULL;
while
(1)
menu();
\t\t*请选择(0-5):
cin>
sel;
switch(sel)
case1:
p1=Init_Polynomial();
p2=Init_Polynomial();
intm;
请输入第一个多项式的项数:
\n"
scanf("
%d"
m);
CreatePolyn(p1,m);
第一个多项式的表达式为p1="
printPloyn(p1);
请输入第二个多项式的项数:
CreatePolyn(p2,m);
第二个多项式的表达式为p2="
printPloyn(p2);
break;
case2:
printf("
p1+p2="
if((p3=subStractPloyn(p1,p2))!
printPloyn(p3);
break;
case3:
\np1-p2="
case4:
\np1*p2="
if((p3=mulitPloyn(p1,p2))!
case5:
Reset_Polynomial(p1);
Reset_Polynomial(p2);
Reset_Polynomial(p3);
case0:
return;
return;
1.5程序执行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序 链式 一元 多项式 加法 减法 乘法 运算 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)