c++单链表 一元多项式求和_C++一元多项式相加

这篇博客介绍了一种使用C++实现一元多项式相加的方法,通过单链表来存储多项式。首先定义了一个模板类`SqList`,包含多项式的元素和长度等信息。`SqList`类提供了多项式相加的成员函数`merg`,能够合并两个多项式并删除重复项。然后,定义了辅助函数`fun`用于输入多项式的系数。在`main`函数中,用户可以输入两个多项式,程序会计算它们的和并打印结果。
摘要由CSDN通过智能技术生成

匿名用户

1级

2010-12-08 回答

#include "stdafx.h"

#include

using namespace std;

template

class SqList

{

private:

Telem * elem;

int curlen;

int maxlen;

public:

SqList(int maxsz=100):maxlen(maxsz)

{

curlen=0;

elem=new Telem{maxlen};

};

SqList(Telem a[],int n,int maxsz=100):maxlen(maxsz)

{

curlen=n;

elem=new Telem[maxlen];

for(int i=0;i

};

~SqList(){delete[] elem;};

Telem gete(int i)

{

if(i>=1&&i<=curlen)return elem[i-1];

else return NULL;

};

int leng(){return curlen;};

SqList&merg(SqList&l2);//声明两多项式相加的成员函数

};

template

SqList&SqList::merg(SqList&l2)//两多项式相加的成员函数的实现

{

int i,j,m,n,k(0);

m=curlen;n=l2.curlen;

if(m+n<=maxlen)

{

for(i=0;i

{

for(j=0;j

if(elem[2*j+1]==l2.elem[2*i+1]){k++;elem[2*j]+=l2.elem[2*i];break;}

if(j==m/2) {elem[m+2*(i-k)]=l2.elem[2*i];elem[m+2*(i-k)+1]=l2.elem[2*i+1];}

}

}

curlen=m+n-2*k;

return *this;

}

void fun(double a[],int j)//该函数实现:输入2j个double型的数,并将其存储到数组中

{

int i;

for(i=0;i

{

double m,n;

cout<

cin>>m>>n;

a[2*i]=m;

a[2*i+1]=n;

}

}

void main()

{

int i,j,k;

cout<

cin>>j;

cout<

double *a=new double[2*j];

fun(a,j);

cout<

cin>>k;

double *b=new double[2*k];

fun(b,k);

SqListsqla(a,2*j);

SqListsqlb(b,2*k);

sqla.merg(sqlb);

cout<

for(i=1;i<=sqla.leng()/2;i++)//用for循环将这二个多项式结果输出

{

cout<

if(i!=sqla.leng()/2)cout<

}

cout<

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值