数据结构 P43 算法实现 两个一元多项式相乘
来源:互联网 发布:matlab求解矩阵方程组 编辑:程序博客网 时间:2024/05/22 02:29
/*程序*/
#include<iostream>
using namespace std;struct node
{
int coefficient; //系数
int exponent; //指数
node *next;
};
class polynomial //多项式
{
public:
int value; //value记录多项式的值
node *head,*p,*s;
public:
polynomial(){head=new node();} //构造函数
void InitPoly(); //创建多项式
void output(); //打印多项式
int count(int x); //计算多项式
};
void polynomial::InitPoly()
{
int x,y; //x记录该项的系数,y记录该项的指数
p=head;
while(1)
{
s=new node(); //动态分配新的节点记录 项
cout<<"coefficient: ";
cin>>x;
if(x==0)break; //当输入系数为0时退出多项式创建函数
s->coefficient=x;
cout<<"exponent: ";
cin>>y;
s->exponent=y;
p->next=s;
p=p->next;
}
cout<<endl;
}
void polynomial::output()
{
cout<<"多项式为:";
for(p=head;p!=NULL;p=p->next)
if(p->coefficient!=0) //该项系数为0则不打印该项
{cout<<p->coefficient<<"*x^"<<p->exponent<<" ";}
cout<<endl;
}
int polynomial::count(int x)
{
int v=1;
value=0;
for (p=head;p!=NULL;p=p->next)
{
for(int j=0;j<p->exponent;++j)
v*=x;
value+=p->coefficient*v; //将每项的值累加起来
v=1;
}
return value; //返回该多项式的值
}
void MultPol(polynomial A,polynomial B,polynomial C);
int main( )
{
polynomial A, B, C;
int x,v;
node *p;
A.InitPoly();
A.output();
B.InitPoly();
B.output();
MultPol(A,B,C);
C.output();
/*以下为验证乘法结果的程序段*/
cin>>x;
v=A.count(x);
cout<<v<<" ";
v=B.count(x);
cout<<v<<" ";
v=C.count(x);
cout<<v<<" ";
/*****************************/
while (1){}
return 0;
}
void MultPol(polynomial A,polynomial B,polynomial C) //多项式乘法:C=A*B
{
node *pa,*pb,*pc,*temp; //定义三个指针分别指向A B C三个多项式
pc=C.head;
for(pa=A.head;pa!=NULL;pa=pa->next) //将A多项式的每项与B多项式的每项依次相乘赋给C多项式
for(pb=B.head;pb!=NULL;pb=pb->next)
{
temp=new node();
temp->coefficient=pa->coefficient*pb->coefficient;
temp->exponent=pa->exponent+pb->exponent;
pc->next=temp;
pc=pc->next;
}
}
————————————————————————————————————————————————
/*多项式相乘算法*/
void MultPol(polynomial A,polynomial B,polynomial C) //多项式乘法:C=A*B
{
node *pa,*pb,*pc,*temp; //定义三个指针分别指向A B C三个多项式
pc=C.head;
for(pa=A.head;pa!=NULL;pa=pa->next) //将A多项式的每项与B多项式的每项依次相乘赋给C多项式
for(pb=B.head;pb!=NULL;pb=pb->next)
{
temp=new node();
temp->coefficient=pa->coefficient*pb->coefficient;
temp->exponent=pa->exponent+pb->exponent;
pc->next=temp;
pc=pc->next;
}
}
阅读全文
0 0
- 数据结构 P43 算法实现 两个一元多项式相乘
- 两个一元多项式相乘,数组与链表实现
- 数据结构——一元多项式相乘
- 数据结构C语言版:一元多项式相乘
- 数据结构实现一元多项式相加
- 数据结构(14)线性表之C++实现一元多项式相乘
- 一元多项式的相乘
- 一元多项式相乘
- 一元多项式相乘
- 2.一元多项式相乘
- 数据结构课程设计一元多项式的相加和相乘
- 数据结构实验1(一元多项式的相加和相乘)
- 数据结构 一元多项式的创建、显示、相加、相减、相乘
- 利用栈实现两个一元多项式相加
- 一元多项式的相加、相乘
- [线性表]一元多项式相乘
- 两个多项式相乘
- (链表实现)写出两个一元多项式相加的算法
- 闭包题目
- N的阶乘N!中的末尾有多少个0?
- 集成学习小结
- C语言(一)--其他关键字
- 工作所用的git常用命令
- 数据结构 P43 算法实现 两个一元多项式相乘
- html&css
- vs新建项目时出现“异常来自HRESULT: "问题解决方法
- spring事件(三)--自定义事件
- 卡方检验思想及其应用
- org.apache.ibatis.reflection.ReflectionException: Error instantiating class
- 关于笨办法学python中的习题35的笔记
- Spring事务配置
- centos设置双网卡绑定band0