数据结构上机作业DOCWord文档下载推荐.docx
《数据结构上机作业DOCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构上机作业DOCWord文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
L)清除多项式
3.voidTraversePoly1(SeqListL)遍历多项式
4.boolInsertPoly1(SeqList&
L,ElemTypeitem)插入一项
5.doublePolySum1(SeqListL,doublex)多项式求值
6.boolDeleteList1(SeqList&
L,intpos)删除一项
7.SeqListPolyAdd1(SeqList&
L1,SeqList&
L2)多项式相加
三、源程序代码
#include<
stdio.h>
iostream.h>
stdlib.h>
#include"
Linkpoly.h"
Seqpoly.h"
voidmain()
{
cout<
<
"
现在进行第一次测试。
(链表表示)"
endl;
doublesum;
inti,e,n,pos;
floata,x;
NodeType*pa,*pb,*pp;
InitPoly(pa);
//初始化多项式
InitPoly(pb);
请输入要测试的项数:
;
cin>
>
n;
请依次输入要测试的各项的系数和指数:
for(i=0;
i<
i++){
a;
e;
InsertPoly(pa,a,e);
//插入一项
pa=pa->
next;
}
该多项式为:
TraversePoly(pa);
//输出多项式
现在进行删除测试,请输入要删除的项的系数和指数以及pos值:
pos;
if(DeletetPoly(pa,a,e,pos)){
删除成功!
现在多项式为:
else
删除失败!
请输入X的值,进行多项式计算:
x;
sum=PolySum(pa,x);
该多项式的值为:
sum<
请输入另一个多项式的项数:
请输入该多项式的各项系数和指数:
InsertPoly(pb,a,e);
pb=pb->
pp=PolyAdd(pa,pb);
两多项式相加后得到的多项式为:
TraversePoly(pp);
ClearPoly(pa);
ClearPoly(pb);
ClearPoly(pp);
现在进行第二次测试。
(顺序表表示)"
ListTypes,t,q;
InitPoly1(s);
InitPoly1(t);
InitPoly1(q);
InsertPoly1(s,a,e);
TraversePoly1(s);
if(DeletetPoly1(s,a,e,pos)){
sum=PolySum1(s,x);
InsertPoly1(t,a,e);
q=PolyAdd1(s,t);
TraversePoly1(q);
ClearPoly1(s);
ClearPoly1(t);
ClearPoly1(q);
Linkploy.h:
structNodeType{
floatcoef;
intexp;
NodeType*next;
};
boolInitPoly(NodeType*&
p)//初始化多项式
if((p=newNodeType)==NULL)
returnfalse;
p->
next=p;
returntrue;
voidTraversePoly(NodeType*p)//输出多项式
NodeType*h=p->
if(h!
=p){
h->
coef<
*"
X"
^"
exp;
h=h->
while(h!
if(h->
coef>
0)
+"
voidClearPoly(NodeType*&
p)//清除多项式
NodeType*cp,*np;
cp=p->
while(cp!
np=cp->
deletecp;
cp=np;
boolInsertPoly(NodeType*&
p,floata,inte)//插入一项
NodeType*h;
if((h=newNodeType)==NULL)
coef=a;
exp=e;
next=p->
next=h;
boolDeletetPoly(NodeType*&
p,floata,inte,intpos)//删除一项
if(pos>
1||pos<
-1)
NodeType*cp=p->
NodeType*np=p;
if(pos==0){
if(cp->
coef==a&
&
cp->
exp==e)
break;
else{
np=cp;
cp=cp->
elseif(pos==-1)
while(cp!
np->
next=cp->
doublePolySum(NodeType*p,floatx)//多项式求值
inti;
doublesum=0,item;
item=1;
for(i=1;
=cp->
i++)
item=item*x;
sum=sum+item*cp->
coef;
returnsum;
NodeType*PolyAdd(NodeType*p1,NodeType*p2)//多项式相加
NodeType*a=p1->
next,*b=p2->
next,*c,*pc;
InitPoly(c);
pc=c;
while(a!
=p1&
b!
=p2){
if(a->
exp==b->
exp){
coef=a->
coef+b->
if(coef!
=0){
InsertPoly(pc,coef,a->
exp);
pc=pc->
a=a->
b=b->
elseif(a->
exp<
b->
InsertPoly(pc,a->
coef,a->
InsertPoly(pc,b->
coef,b->
=p1){
while(b!
returnc;
Seqploy.h:
#defineMaxSize10000
structListType{
float*list;
intsize;
voidInitPoly1(ListType&
p.list=(float*)malloc(MaxSize*sizeof(float));
if(p.list==NULL){
动态可分配的储存空间用完,退出运行!
exit
(1);
p.size=0;
for(inti=0;
MaxSize;
p.list[i]=0;
voidTraversePoly1(ListTypep)//输出多项式
inti=0;
if(p.list[i]!
=0)
p.list[i]<
i;
for(i=i+1