数据结构一元多项式相加求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 19:29:17
数据结构一元多项式相加求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1

数据结构一元多项式相加求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1
数据结构一元多项式相加
求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1

数据结构一元多项式相加求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1

以前写的代码.

#include<iostream>
using namespace std;
#define max 10000000
struct node
{
float coef;
int exp;
node *next;
};

struct Poly
{
char name;
node *other;
}poly[max];

int count;//poly的个数;
//生成多项式的函数
void creat(node *&L)
{
node *p,*q;
L=new node;
q=L;
float a;
int b;
while(cin>>a>>b)
{
  if((a==0&&b<0)||b<0) break;
  p=new node;
  p->coef=a;
  p->exp=b;
  q->next=p;
  q=p;
}
q->next=NULL;
}

//输入多项式
void inputing()
{
char c,d;
node *L;
do
{
cout<<"要输入多项式请按‘Y’,放弃请按其他键"<<endl;
cin>>c;
cin.get();
if(c=='Y')
{
  count++;
  cout<<"请输入要输入多项式的名字(仅一个字符):";
  cin>>d;
  cin.get();
  poly[count].name=d;
  cout<<"请按指数由小到大的顺序输入系数和对应的指数,输入0 -1结束."<<endl;
  creat(L);
  poly[count].other=L->next;
}
}while(c=='Y');
}
//两个多项式的加法
void adding(int i1,int i2,node *&L)
{
node *L1=poly[i1].other;
node *L2=poly[i2].other;
L=new node;
node *r=L,*s;
while(L1!=NULL&&L2!=NULL)
{
  s=new node;
  if(L1->exp<L2->exp)
  {
   s->coef=L1->coef;
   s->exp=L1->exp;
   r->next=s;
   r=s;
   L1=L1->next;
  }
  else if(L1->exp>L2->exp)
  {
   s->coef=L2->coef;
   s->exp=L2->exp;
   r->next=s;
   r=s;
   L2=L2->next;
  }
  else
  {
   s->coef=L1->coef+L2->coef;
   s->exp=L1->exp;
   r->next=s;
   r=s;
   L1=L1->next;
   L2=L2->next;
  }
}
while(L1!=NULL)
{
  s=new node;
  s->coef=L1->coef;
  s->exp=L1->exp;
  r->next=s;
  r=s;
  L1=L1->next; 
}
while(L2!=NULL)
{
  s=new node;
  s->coef=L2->coef;
  s->exp=L2->exp;
  r->next=s;
  r=s;
  L2=L2->next;
}
r->next=NULL;
}
//多项式的运算
void operating()
{
int n,i;
char c1,c2;
node *L;
printf("1--两个多项式之和\n2--两个多项式之差\n3--数乘\n4--求导\n0--放弃\n");
cout<<"请选择:";
cin>>n;
cin.get();
if(n==1||n==2) 
{
if(n==1) cout<<"请输入二个多项式(格式:k=f+g):";
if(n==2) cout<<"请输入二个多项式(格式:k=f-g):";
  count++;
  cin>>poly[count].name>>c1>>c1>>c2>>c2;
  int i1,i2;
  for(i=0;i<count;i++)
  {
   if(c1==poly.name) i1=i;
   if(c2==poly.name) i2=i;
  }
  if(n==2)
  {
   node *s=poly[i2].other;
   while(s!=NULL)
   {
    s->coef=-s->coef;
    s=s->next;
   }
  }
   adding(i1,i2,L);
  if(n==2)
  {
   node *s=poly[i2].other;
   while(s!=NULL)
   {
    s->coef=-s->coef;
    s=s->next;
   }
  }
   poly[count].other=L->next;
}
else if(n==3)
{
  node *p,*r,*q;
  cout<<"请输入数与多项式(格式:k=n*f):";
  count++;
  cin>>poly[count].name>>c1>>n>>c1>>c2;
  for(i=0;i<count;i++)
   if(c2==poly.name) break;
  L=poly.other;
  q=new node;
  r=q;
  while(L!=NULL)
  {
   p=new node;
   p->coef=n*(L->coef);
   p->exp=L->exp;
   r->next=p;
   r=p;
   L=L->next;
  }
  r->next=NULL;
  poly[count].other=q->next;
}
else if(n==4)
{
  node *p,*q,*r;
  cout<<"请输入要求导的多项式(格式:g=f'):";
  count++;
  cin>>poly[count].name>>c1>>c1>>c2;
  for(i=0;i<count;i++)
   if(c1==poly.name) break;
  L=poly.other;
  q=new node;
  r=q;
  while(L!=NULL)
  {
   p=new node;
   if(L->exp>0)  
   {
    p->exp=L->exp-1;
    p->coef=(L->coef)*(L->exp);
    r->next=p;
    r=p;
   }
   L=L->next;
  }
  r->next=NULL;
  poly[count].other=q->next;
}
}

//输出多项式
void display()
{
int i,k,t;
node *p;
for(i=0;i<=count;i++)
{
  t=0;
  cout<<poly.name<<" = ";
  p=poly.other;
  k=-1;
  while(p!=NULL)
  {
   t=1;
   k++;
   if(k==0&&p->exp==0) cout<<p->coef;
   else
   {
    if(p->coef>=0&&k!=0)
    cout<<"+";
    cout<<p->coef<<"x^"<<p->exp;
   }
   p=p->next;
  }
  if(t==0) cout<<"0";
  cout<<endl;
}
}

数据结构一元多项式相加求C语言程序:f(X)=x^10+x^7+x^3+1加g(x)=x^5+3x^3+x^2+1 数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算 数据结构(C语言) 如何分别用顺序和链式 实现一元多项式的相加? 怎么编程一元多项式相加(数据结构) 多项式相加C语言 一元多项式的实现(C语言)求程序大神帮忙解决一下数据结构的练习.要求:1)一元多项式的输入,显示输出(1)提示输入多项式系数和指数,输入之后把多项式按照常用形式显示出来(2)计算结 编写一个程序用单链表存储多项式,并实现两个多项式相加的函数?C/C++语言 设计一个一元多项式简单的计算器(数据结构C语言版)急要求:一元多项式计算器的基本功能定为 (1) 建立多项式 (2) 输出多项式 (3) 两个多项式相加,建立并输出和多项式 (4) 两个多项式相减 数据结构串的操作:求单词个数用C语言边个程序求单词个数 【数据结构】 实现两个多项式的相加、减.要求:输出两个多项式原式,以及计算结果.用C语言…… 如何用C语言实现两个一元多项式的相加和相乘?就是说,加法时如何将它们的同类项相加,乘法时将每一项都与另一个一元多项式相乘.用C语言描述出来,如果可以麻烦将程序大致描述一下. 数据结构:用链表实现两个多项式相加,用C++或者C语言实现多项式相加,求完整代码输入:第一行输入包含两个整数m,n后续为m行和n行数据m,n分别代表两个多项式的项数后续每一行代表多项式 数据结构一元多项式相加,怎样让结果单独显示,或者区分开来! C语言写多项式相加怎么写? 两个一元多项式相加 刚开始学数据结构(C语言),学到线性链表这一节 有个题目是关于多项式相加 不懂 求助刚开始学数据结构(C语言),学到线性链表这一节有个题目是关于多项式相加的 要用到结点A(x)=7+11x+22x c/c++数据结构一元多项式的求和一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表.请编写程序对输入的两个一元多项式求和,并输出求和的结果.输入为两个一元多项式,每个 急求一元多项式计算.x立方+5X平方+4X 与X的5次方+X的4次方+X 叠加 求新的多项式!不好意思 立方 平方什么的我不会打!是用数据结构做出程序!