C++ 队列 实现 多项式 加减法
来源:互联网 发布:春运迁徙大数据图 编辑:程序博客网 时间:2024/05/16 09:54
#include <iostream>
#include <queue>
using namespace std;
struct Node
{
int exp;//指数
int coef;//系数
};
class Polynomial
{
public:
insert(int i,int j);
show();
void sum(const Polynomial a,const Polynomial b);//加
void sub(const Polynomial a,const Polynomial b);//减
private:
queue<Node> m_queue;
};
Polynomial::insert(int i,int j)
{
Node node;
node.exp=j;//指数
node.coef=i;//系数
m_queue.push(node);
}
void Polynomial::sum(const Polynomial a,const Polynomial b){
Node n1,n2;
queue<Node> q1=a.m_queue;//
queue<Node> q2=b.m_queue;
while(q1.size()>0||q2.size()>0){
n1=q1.front();
n2=q2.front();
if(n1.exp>n2.exp){
q1.pop();
m_queue.push(n1);
}
else if(n1.exp<n2.exp){
q2.pop();
m_queue.push(n2);
}
else{
n1.coef+=n2.coef;
m_queue.push(n1);
q2.pop();
q1.pop();
}
}
}
void Polynomial::sub(const Polynomial a,const Polynomial b){
Node n1,n2;
queue<Node> q1=a.m_queue;//
queue<Node> q2=b.m_queue;
while(q1.size()>0||q2.size()>0){
n1=q1.front();
n2=q2.front();
if(n1.exp>n2.exp){
q1.pop();
m_queue.push(n1);
}
else if(n1.exp<n2.exp){
q2.pop();
m_queue.push(n2);
}
else{
n1.coef-=n2.coef;
m_queue.push(n1);
q2.pop();
q1.pop();
}
}
}
Polynomial::show(){
Node nodeFromQueue;
while(m_queue.size()>0){
nodeFromQueue=m_queue.front();
if(m_queue.size()==1){
cout<<nodeFromQueue.coef<<"~"
<<nodeFromQueue.exp;
m_queue.pop();
}
else{
cout<<nodeFromQueue.coef<<"~"
<<nodeFromQueue.exp<<"+";
m_queue.pop();
}
}
cout<<endl<<endl;
}
void main()
{
Polynomial a,b,c,d;
int i=0,j=0;//i为系数,j为指数
cout<<"第一个多项式(以-1结束):"<<endl;
while(true){
cin>>i>>j;
if(i==-1)
break;
else
a.insert(i,j);
}
cout<<endl;
cout<<"第二个多项式(以-1结束):"<<endl;
while(true){
cin>>i>>j;
if(i==-1)
break;
else
b.insert(i,j);
}
cout<<"相加:"<<endl;
c.sum(a,b);
d.sub(a,b);
cout<<endl;
a.show();
b.show();
c.show();
d.show();
}
#include <queue>
using namespace std;
struct Node
{
int exp;//指数
int coef;//系数
};
class Polynomial
{
public:
insert(int i,int j);
show();
void sum(const Polynomial a,const Polynomial b);//加
void sub(const Polynomial a,const Polynomial b);//减
private:
queue<Node> m_queue;
};
Polynomial::insert(int i,int j)
{
Node node;
node.exp=j;//指数
node.coef=i;//系数
m_queue.push(node);
}
void Polynomial::sum(const Polynomial a,const Polynomial b){
Node n1,n2;
queue<Node> q1=a.m_queue;//
queue<Node> q2=b.m_queue;
while(q1.size()>0||q2.size()>0){
n1=q1.front();
n2=q2.front();
if(n1.exp>n2.exp){
q1.pop();
m_queue.push(n1);
}
else if(n1.exp<n2.exp){
q2.pop();
m_queue.push(n2);
}
else{
n1.coef+=n2.coef;
m_queue.push(n1);
q2.pop();
q1.pop();
}
}
}
void Polynomial::sub(const Polynomial a,const Polynomial b){
Node n1,n2;
queue<Node> q1=a.m_queue;//
queue<Node> q2=b.m_queue;
while(q1.size()>0||q2.size()>0){
n1=q1.front();
n2=q2.front();
if(n1.exp>n2.exp){
q1.pop();
m_queue.push(n1);
}
else if(n1.exp<n2.exp){
q2.pop();
m_queue.push(n2);
}
else{
n1.coef-=n2.coef;
m_queue.push(n1);
q2.pop();
q1.pop();
}
}
}
Polynomial::show(){
Node nodeFromQueue;
while(m_queue.size()>0){
nodeFromQueue=m_queue.front();
if(m_queue.size()==1){
cout<<nodeFromQueue.coef<<"~"
<<nodeFromQueue.exp;
m_queue.pop();
}
else{
cout<<nodeFromQueue.coef<<"~"
<<nodeFromQueue.exp<<"+";
m_queue.pop();
}
}
cout<<endl<<endl;
}
void main()
{
Polynomial a,b,c,d;
int i=0,j=0;//i为系数,j为指数
cout<<"第一个多项式(以-1结束):"<<endl;
while(true){
cin>>i>>j;
if(i==-1)
break;
else
a.insert(i,j);
}
cout<<endl;
cout<<"第二个多项式(以-1结束):"<<endl;
while(true){
cin>>i>>j;
if(i==-1)
break;
else
b.insert(i,j);
}
cout<<"相加:"<<endl;
c.sum(a,b);
d.sub(a,b);
cout<<endl;
a.show();
b.show();
c.show();
d.show();
}
- C++ 队列 实现 多项式 加减法
- 多项式的加减法以及乘法的C语言实现
- 一元多项式加减法运算[C语言]
- 一元多项式的加减法 C++实现
- 多项式加减法(递减排序)
- 一元多项式的加减法
- C/C++实现大整数加减法
- 一元稀疏多项式(加减法)
- 一元稀疏多项式加减法计算器
- C++完成多项式的加减法
- 加减法实现
- 【c++】复数加减法类
- 多项式除法的实现(附c代码)
- c实现一元多项式加乘
- 用单链表实现多项式运算(ANSI C)
- Horner规则实现多项式求值--C语言版
- C语言实现一个多项式操作
- 【c语言】递归实现厄密多项式
- 程序员学习能力提升三要素
- 是否应该使用ARC?
- 在次线程中下载,在主线程更新的例子
- Java代理技术
- WIN7可中SQL SERVER 2008安装时出现不能在控件上调用 Invoke 或 BeginInvoke错误(终极解决方法)
- C++ 队列 实现 多项式 加减法
- ZOJ 2224 Investment
- Shell脚本调试技术
- Java 入门 三 (Java三大特性 之一 封装 )
- Fedora下自动挂载Windows分区的方法及权限问题
- nbu 2412 Dice
- FileStream 和 StreamWriter/StreamReader
- Cuda的一些配置
- 向PDF文件插入图片