多项式的实现

在实现上述链表之后,我们自己动手完成一个习题,就是利用链表实现多项式的相加,这个就比较简单,这里可要自己动手写,我也是完全自己写的。

#include <iostream>

using namespace std;
typedef struct LNode
{
float coef;//系数
int expn;//指数
struct LNode *next;
}LNode,*LinkList;
void Initexpn(LinkList &L,int n)
{
int i;
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=(LinkList)malloc(sizeof(LNode));
q=L;
for(i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
cout<<"请输入第"<<i<<"的系数:"<<endl;
cin>>p->coef;
cout<<"请输入第"<<i<<"的指数:"<<endl;
cin>>p->expn;
q->next=p;
p->next=NULL;
q=p;
}
}
void PrintList(LinkList &L)
{
LinkList p;
p=(LinkList)malloc(sizeof(LNode));
p=L->next;
while(p)
{
if(p->expn==0)
{
cout<<p->coef<<"+";
}
else if(p->next!=NULL)
{
cout<<p->coef<<"*x^"<<p->expn<<"+";
}
else
{
cout<<p->coef<<"*x^"<<p->expn;
}
p=p->next;
}
cout<<endl;
}
void UnionList(LinkList &La,LinkList &Lb,LinkList &Lc)
{
LinkList pa,pb,pc;
pa=La->next;
pb=Lb->next;
pc=Lc=La;
while(pa && pb)
{
if(pa->expn<pb->expn)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else if(pa->expn>pb->expn)
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
else
{
pa->coef=pa->coef+pb->coef;
pc->next=pa;
pc=pa;
pa=pa->next;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(Lb);
}
int main()
{
LinkList P,Q,R;
int num;
cout<<"请输入第一个多项式的个数:"<<endl;
cin>>num;
Initexpn(P,num);
PrintList(P);
cout<<"请输入第二个多项式的个数:"<<endl;
cin>>num;
Initexpn(Q,num);
PrintList(Q);
UnionList(P,Q,R);
PrintList(R);
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值