顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx

上传人:b****3 文档编号:15200755 上传时间:2022-10-28 格式:DOCX 页数:13 大小:28.94KB
下载 相关 举报
顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx_第1页
第1页 / 共13页
顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx_第2页
第2页 / 共13页
顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx_第3页
第3页 / 共13页
顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx_第4页
第4页 / 共13页
顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx

《顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

顺序链式一元多项式加法减法乘法运算的实现Word文档下载推荐.docx

*************************************************

*请选择(0-5):

1.2数据结构设计

根据下面给出的存储结构定义:

#defineMAXSIZE20//定义线性表最大容量

//定义多项式项数据类型

typedefstruct

{

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]);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1