C++实现两个多项式相加

本文介绍如何使用C++编程语言实现两个多项式的相加操作,包括多项式的创建、打印以及多项式相加的算法实现。

C++实现两个多项式相加,具体代码如下:

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct PNode)
 struct PNode
 {float coef;
 int expn;
 struct PNode *next;
 };
 
void print(PNode* p)
{
PNode *r;  int i;
if(!p)
printf("this is a kongbiao");
r=p->next;
printf("p(x)=");
while(p&&(r->next))
{
 printf("%d",r->coef);
 for(i=1;i<r->expn;i++)
   printf("x*");
 printf("x");
 printf("+");
 r=r->next;
}
printf("%d",r->coef);
 for(i=1;i<r->expn;i++)
   printf("x*");
 printf("x");
}
 
 
 
 struct PNode* CreatPolyn(struct PNode *P1,int m)
{
int i;
struct PNode *s,*p;
 
s=(struct PNode*)malloc(LEN);
if(!s)
 {
  printf("内存分配失败,程序结束!");
  exit(1);
 }
s->next=NULL;
P1=s;
for(i=1;i<=m;i++)
{
   p=(struct PNode*)malloc(LEN);
   printf("请按指数的升幂输入一元多项式的系数和指数:\n");
   scanf("%d,%d",&p->coef,&p->expn);
   printf("\n");
s->next=p;
s=p;
}
s->next=NULL;
return P1;
}
 
 
 
struct PNode* AddPolyn(struct PNode *Pa,struct PNode *Pb)
{PNode *ha,*hb,*qa,*qb;  float sum;  PNode *s;
 ha=Pa;hb=Pb;
   if(ha->next!=0)qa=ha->next;if(hb->next!=0)qb=hb->next;  
   while(qa&&qb)
   {
if(qa->expn==qb->expn)
{ sum=qa->coef+qb->coef;
        if(sum!=0.0)
  {    qa->coef=qa->coef+qb->coef;  }
  else{ 
 free(qb);free(qa);
}}
if(qa->expn>qb->expn) //pb项插在pa项前面
{
   s=(PNode*)malloc(LEN);
      s->coef=qb->coef;
   s->next=qa;  ha->next=s;
       ha=ha->next;
    free(qb);}
             
if(qa->expn<qb->expn)//pb插在pa的后面
{
   s=(PNode*)malloc(LEN);
      s->coef=qb->coef;
   s->next=qa->next;
   qa->next=s;
    free(qb);
       
   }
 
   }
return Pa;}
 
 
void main()
{int i,m;
  struct PNode *Pa,*Pb,*pc;
  printf("请输入一元多项式pa的项数:\n");
   scanf("%d",&m);
   Pb=CreatPolyn(Pb,i);
printf("请输入一元多项式pb的项数:\n");
   scanf("%d",&i);
Pa=CreatPolyn( Pa,m);  转载请注明圣安娜娱乐 http://www.leruntoys.com

转载于:https://www.cnblogs.com/vdtte/p/3223163.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值