数据结构多项式运算器源代码Word文档下载推荐.docx
《数据结构多项式运算器源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构多项式运算器源代码Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
data=e;
next=NULL;
}//MakeNode
voidInitList(LinkList&
L){
L.head=L.tail=(Link)malloc(sizeof(LNode));
L.head)exit
(1);
L.head->
L.len=0;
}//InitList
voidDestroyList(LinkList&
Linkp,q;
p=L.head->
next;
while(p){
q=p->
free(p);
p=q;
}
L.tail=L.head;
}//DestroyList
voidInsLast(LinkList&
L,Links){
L.tail->
next=s;
L.tail=s;
L.len++;
}//InsLast
voidAppend(LinkList&
Linkq;
intm;
s)exit
(1);
q=s;
m=1;
while(q->
next){
m++;
q=q->
L.len+=m;
L.tail=q;
}//Append
/*====================多项式-ADT====================*/
voidCreatPolyn(LinkList&
terme;
Links;
scanf("
%f,%d"
&
e.coef,&
e.expn);
while(e.coef){
MakeNode(s,e);
InsLast(L,s);
scanf("
}//CreatPolyn
intJudge(intn){
if(n>
19||n<
0){
printf("
存储位置选择错误!
请重新选择0-19.\n"
);
return1;
else
return0;
}//Judge
voidPrintPolyn(LinkListL){
Linkp;
p)
NULL\n"
else{
y="
if(p->
data.coef>
if(p->
data.expn==0)
printf("
%f"
p->
data.coef);
else
%fx^%d"
data.coef,p->
data.expn);
p=p->
}
else{
if(p->
printf("
+%f"
+%fx^%d"
}
next)
p=p->
\n"
}//PrintPolyn
voidPrintAll(LinkListS[]){
inti;
for(i=0;
i<
20;
i++){
%d."
i);
PrintPolyn(S[i]);
}//PrintAll
voidCopyPolyn(LinkListL,LinkList&
S){
Links,p;
e.coef=p->
data.coef;
e.expn=p->
data.expn;
InsLast(S,s);
p=p->
S.tail->
}//CopyPolyn
intAddPolyn(LinkList&
L,LinkListP,LinkListQ){
Linka,b,c;
a=P.head->
b=Q.head->
while((a!
=NULL)&
&
(b!
=NULL)){
if(a->
data.expn<
b->
data.expn){
e.coef=a->
e.expn=a->
MakeNode(c,e);
InsLast(L,c);
a=a->
elseif(a->
data.expn>
e.coef=b->
e.expn=b->
b=b->
elseif((a->
data.coef+b->
data.coef)!
=0){
e.coef=a->
InsLast(L,c);
b=b->
elseif((a->
data.coef)==0){
a=a->
a&
!
b){
L.tail->
while(a){
a){
while(b){
e.coef=b->
return0;
}//AddPolyn
voidSubtractPolyn(LinkList&
p=Q.head->
p->
data.coef=0-p->
AddPolyn(L,P,Q);
}//SubtractPolyn
doubleResultPolyn(LinkListL,floatx){
doubley=0;
y+=(pow(x,p->
data.expn)*p->
returny;
}//ResultPolyn
voidMultiplyPolyn(LinkList&
Linkl,p,q;
LinkListE,F;
InitList(E);
InitList(F);
inti,j;
p=P.head->
q=Q.head->
Q.len;
for(j=0;
j<
P.len;
j++){
e.coef=p->
data.coef*q->
e.expn=p->
data.expn+q->
MakeNode(l,e);
InsLast(E,l);
AddPolyn(L,E,F);
DestroyList(E);
DestroyList(F);
CopyPolyn(L,F);
if(i!
=Q.len-1)
DestroyList(L);
p=P.head->
}//MultiplyPolyn
voidPolyn_NFang(LinkList&
L,LinkListP,intn){
LinkListE;
CopyPolyn(P,E);
n;
MultiplyPolyn(L,E,P);
CopyPolyn(L,E);
=n-1)
}//Polyn_NFang
voidPolyn_NDao(LinkList&
CopyPolyn(P,L);
p=L.head->
q=L.head;
L.len;
if(p