多项式加法

//多项式加法
struct node
{
 int coef; //系数
 int expn; //指数
 node* next; //
};

void attach(int c,int e,node* &p)
{//在p接点的后面增加一个新节点,令p指向新节点
 //在新节点的系数字段c,指数字段为e
 node temp = new node();
 temp.coef = c;
 temp.expn = e;
 p->next = temp;
 p = temp;
}

//两个多项式相加
//ha,hb : 第1,2个多项式
//hc相加后的多项式
void addpolyn(node* ha,node* hb,node* &hc)
{
 node* pa,pb,pc;
 hc =  new node();
 pa = ha->next;
 pb = hb->next;
 pc = hc;

 while((pa != NULL) && (pb != NULL))
 {//当两个多项式都不为空时候
  if(pa->expn == pb->expn)
  {//如果两者的指数相同
   int temp = pa->coef + pb->coef;
   if(temp != 0)
   {//如果相加不为0,新建一个node节点
    attach(temp,pa->expn,pc);
   }
   else
   {//如果为0就什么都不做

   }
   pa = pa->next;
   pb = pb->next;
  }
  else if(pa->expn < pb->expn)
  {//如果pa的指数比较小,把pc后面加上pa的内容
   attach(pa->coef,pa->expn,pc);   //重新分配内容的方法
   pa++
  }
  else
  {//如果pb的指数比较小
   attach(pb->coef,pb->expn,pc);
   pb++
  }
 }

 //如果pa,pb至少有一个为空
 if(pa != NULL)                               //直接连接的方法
 {
  pc.next = pa;
 }
 if(pb != NULL)
 {
  pc.next = pb;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值