多项式相加

这是一份关于多项式相加的程序代码

//多项式qa中还有剩余,则将剩余的结点加入到和多项式中
p->next=qa;
else //否则将qb的结点加入到和多项式中
p->next=qb;
return(head);
}

LinkList minus(LinkList L1,LinkList L2)
{
LinkList p=L2->next;
while(p){
p->coe*=-1;
p=p->next;
}
return(add(L1,L2));
}



LinkList multip(LinkList Pa,LinkList Pb)
{
LinkList p,q,m,hm,hn,s;
if(!Pa->next||!Pb->next) {
Pa->next=NULL;
return(Pa);
}
hn=(LinkList)malloc(sizeof(LNode));
hn->next=NULL;
hm=(LinkList)malloc(sizeof(LNode));
hm->next=NULL;
q=Pa->next;
while(q!=NULL){
m=hm;
for(p=Pb->next;p!=NULL;p=p->next){
s=(LinkList)malloc(sizeof(LNode));
s->next=NULL;
s->coe=p->coe*q->coe;
s->exp=p->exp+q->exp;
m->next=s;
m=s;
}
q=q->next;
hn=add(hn,hm);
}
return(hn);
}

void value(LinkList L,float x)
{
LinkList p;
int i;
float sum=0,t;
for(p=L->next;p;p=p->next){
t=1;
for(i=p->exp;i!=0;){
if(i<0){t/=x;i++;}//指数小于0
else{t*=x;i--;} //指数大于0
}
sum+=p->coe*t;
}
cout<<sum<<endl;
}
void menu(LinkList L1,LinkList L2)
{
LinkList p1,p2,p3;
char i;float x;int n;
L1=(LinkList)malloc(sizeof(LNode));
CreateList(L1,n);
cout<<"L1=";
print(L1);
L2=(LinkList)malloc(sizeof(LNode));
CreateList(L2,n);
cout<<"L2=";
print(L2);
cout << "1:多项式的相加" << endl
<< "2: 多项式的相减" << endl
<< "3: 多项式的相乘" << endl
<< "4: 计算多项式在x处的值" << endl
<< "5: 退出程序" <<endl;
cout << "请选择:" ;
cin >>i;
switch(i){
case '1':p1=add(L1,L2); cout<<"L1+L2=";print(p1);break;
case '2':p2=minus(L1,L2);cout<<"L1-L2="; print(p2);break;
case '3':p3=multip(L1,L2);cout<<"L1*L2=";print(p3);break;
case '4':cout << "请输入您求值的多项式的编号:"<<endl;
int number;
cin>>number;
cout<<"请输入X的值:";
cin>>x;
cout<<"多项式在x处的值为:";
if(number==1)
value(L1,x);
if(number==2)
value(L2,x);
break;
case '5': exit(0);
default:cout<<"输入错误!请重新输入!"<<endl;break;
}

}


void main()
{
LinkList L1,L2;
int flag=1;
while(flag==1){
menu(L1,L2);
cout << "您是否继续 1=是, 0=否" << endl;
cin >> flag;
if(flag==0)
break;
}
}

多项式相加相关文档

最新文档

返回顶部