数据结构中多项式求和问题

jieyyal 2010-11-30 12:37:08
书中给出了头文件Polynomial.h和operator+的定义,却没有驱动程序,不是很懂,老师还要求写乘法,请问大侠们,对应的加法驱动程序该怎么写额
//Polynomial.h

#ifndef POLYNOMIAL
#define POLYNOMIAL

template <typename int>
class Polynomial
{
private:

class Term
{
public:
CoefType coef;
unsigned expo;
};//类Term结束
/***Node类***/
class Node
{
public:
Term data;
Node *next;

//--Node构造函数
//根据给定的初始值来构造一个Node
Node(CoefType co=0,int ex=0,Node *ptr=0)
{data.coef=co;
data.expo=ex;
next=ptr;
}
};//Node类结束
typedef Node * NodePointer;

public:
Polynomial<CoefType> operator+(const Polynomial<CoefType>&secondPoly);

/***函数成员***/
//多项式操作

private:
/***数据成员***/
int myDegree;
NodePointer myTermss;//一个具有头节,元素类型为Term的链表

};//Polynomial类模板结束
#endif


template <typename CoefType>
Polynomial <CoefType> Polynomial<CoefType>::operator+(
const Polynomial<CoefType>&secondPoly)

{
Polynomial<CoefType> sumPoly;
Polynomial<CoefType>::NodePointer
ptra = myTerms->next,
ptrb = secondPoly.myTerms->next,
ptrc = sumPoly.myTerm;
int degree = 0;
while(ptra != 0 || ptrb != 0)
{
if((ptrb==0) || (ptra !=0) && ptra->data.expo < ptrb->data.expo)
{
ptrc->next = new Polynomial<CoefType>::
Node(ptra->data.coef,ptra->data.expo);
degree = ptra->data.expo;
ptra = ptra->next;
ptrc = ptrc->next;
}
else if((ptra == 0) ||
(ptrb != 0 && ptrb->expo < ptra->expo))
{
ptrc->next = new Polynomial<CoefType>::
Node(ptrb->data.coef,ptrb->data.expo);
degree = ptrb->data.expo;
ptrb = ptrb->next;
ptrc = ptrc->next;
}
else
{
CoefType sum = ptra->data.coef + ptrb->data.coef;
if(sum != 0)
{
ptrc->next = new Pplynomial<CoefType>::
Node(sum,ptra->data.expo);
degree = ptra->data.expo;
ptrc = ptrc->next;
}
ptra = ptra->next;
ptrb = ptrb->next;
}
}
sumPoly.myDegree = degree;
return sumPoly;
}
...全文
209 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
faithzzf 2010-12-01
  • 打赏
  • 举报
回复
你所要的驱动程序就是建立几个对象,然后调用多项式加法函数,看是否得出正确的结果
jieyyal 2010-11-30
  • 打赏
  • 举报
回复
只需要加法的就行了
jieyyal 2010-11-30
  • 打赏
  • 举报
回复
因为时间比较紧,写个drive.cpp给我吧,贴在上面或发我邮箱都行,jieyyal@126.com
jieyyal 2010-11-30
  • 打赏
  • 举报
回复
可是这些我在上述程序中都已经实现了额,我现在只是要一个驱动程序
faithzzf 2010-11-30
  • 打赏
  • 举报
回复
用链表表示多项式,并根据指数升幂排序(降幂也行)。同步扫描相加的链表,如果他们的指数相同,则把它们的系数相加,如果不同,需要查看前面的结果是否有指数相同的,有则系数相加,无则作为单独到一项放入结果中,直到相加的若干个多项式链表都扫描完。相乘类似,只是多个多项式相乘会难搞一点
yaoweijq 2010-11-30
  • 打赏
  • 举报
回复
多项式加法是乘法的前提,
用链表直接就搞定了
pmars 2010-11-30
  • 打赏
  • 举报
回复
用自己的程序表达一下自己的思路……

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧