数据结构课程设计_两个一元稀疏多项式相加 第2页
操作结果:输入M项的系数和指数,建立一元多项式P。
PrintPloyn(P)
初始条件:一元二项式P存在。
操作结果:输出一元二项式P。
AddPolyn(&Pa,&Pb)
初始条件:一元二项式Pa和Pb已存在。
操作结果:完成多项式相加运算,即:Pa=Pa+Pb。
}ADT Polynomial
4.3基本操作的算法描述
(1)项数的结构体
typedef struct{//项的表示,多项式作为LinkList的数据元素
int coef;//系数
int expn;//指数
}Term;
(2)输入M项的系数和指数,建立一元多项式P
status CreatPolyn(void){
scanf(n);
head=p1=p2=(elemtype*)malloc(LEN);
scanf(p1->coef,p1->expn);
for(i=2;i<=n;i++){
p1=(ElemType*)malloc(LEN);
scanf(p1->coef,p1->expn);
p1->next=NULL;
p2->next=p1;
p2=p2->next;
}//for
return(head);
}//CreatPolyn
(3)完成多项式相加运算,即:Pa=Pa+Pb
status AddPolyn(Term p1,Term p2){
n=0;
if(n==1){
if(p1->expn>p2->expn){
head=p3=p1;p1=p1->next;
}/*if*/
else if(p1->expn==p2->expn){
p1->coef=p1->coef+p2->coef;
if(p1->coef==0){
n=0;p1=p1->next;p2=p2->next;
if(!p1)head=p2;
if(!p2)head=p1;
if(!p1&&!p2){
printf("answer is 0\n");
head=NULL;}/*if*/
}/*if*/
else{
head=p3=p1;p1=p1->next;p2=p2->next;
}/*else*/
}/*else if*/
else{
head=p3=p2;p2=p2->next;
}/*else*/
}/*if*/
else{
if(p1->expn>p2->expn){
p3->next=p1;p1=p1->next;p3=p3->next;
}/*if*/
else if(p1->expn==p2->expn){
p1->coef=p1->coef+p2->coef;
if(p1->coef==0){
p1=p1->next;p2=p2->next;
} /*if*/
else{
p3->next=p1;p1=p1->next;p2=p2->next;p3=p3->next;
}/*else*/
}/*else if*/
else{
p3->next=p2;p2=p2->next;p3=p3->next;
}/*else*/
} /*else*/
}/*while*/
while(p1!=NULL){
需要完整内容的请联系QQ3249114,本文免费,转发请注明源于www.751com.cn return(head);
}/*daapolyn*/
(4)输出一元二项式P
status PrintPolyn(p){
while(p){
m++;
printf(cm=p->coef,em=p->expn)//输出c1,e1,c2,e2…cm,em,c为系数,e为指数
}//while
print(m);//输出项数
}//PrintPolyn