多项式相加

来源:互联网 发布:node eclipse 插件 编辑:程序博客网 时间:2024/06/12 01:25

利用链表实现多项式的加,减,乘;

#ifndef _POLYN_H
#define _POLYN_H

#include<iostream>
#include<assert.h>
using namespace std;

typedef struct PolynNode
{
 float coef;
 int   expn;
 struct PolynNode *link;
}PolynNode;

typedef PolynNode* Polyn;

void _insert(Polyn &pn, PolynNode *s);
void InitPolyn(Polyn &pn);
void CreatePolyn(Polyn &pn, int m);
void ShowPolyn(Polyn pn);
Polyn PolynAdd(Polyn pa, Polyn pb);
Polyn PolynSub(Polyn pa, Polyn pb);
Polyn PolynMul(Polyn pa, Polyn pb);

#endif

 

#include"Polyn.h"

void _insert(Polyn &pn, PolynNode *s)
{
 if(s->coef == 0)
 {
  free(s);
  s = NULL;
 }
 else
 {
  if(pn == NULL)
  {
   pn = s;
   return;
  }
  PolynNode *p = pn;
  PolynNode *q = NULL;
  while(p!=NULL && p->expn>s->expn)
  {
   q = p;
   p = p->link;
  }
  if(q == NULL)
  {
   s->link = pn;
   pn = s;
   return;
  }
  if(p!=NULL)
  {
   s->link = p;
  }
  q->link = s;
 }
}

void InitPolyn(Polyn &pn)
{
 pn = NULL;
}

void CreatePolyn(Polyn &pn,int m)
{
 for(int i=1; i<=m; ++i)
 {
  PolynNode *s = (PolynNode*)malloc(sizeof(PolynNode));
  assert(s != NULL);
  s->link = NULL;
  cout<<"请输入第"<<i<<"项的系数和指数:>";
  cin>>s->coef>>s->expn;
  _insert(pn, s);
 }
}

void ShowPolyn(Polyn pn)
{
 PolynNode *p = pn;
 while(p != NULL)
 {
  cout<<p->coef<<"x^"<<p->expn<<"+";
  p = p->link;
 }
}

Polyn PolynAdd(Polyn pa, Polyn pb)
{
 Polyn pn;
 return pn;
}
Polyn PolynSub(Polyn pa, Polyn pb)
{
 Polyn pn;
 return pn;
}

Polyn PolynMul(Polyn pa, Polyn pb)
{
 Polyn pn;
 return pn;
}

#include<iostream>
#include"Polyn.h"
using namespace std;

void main()
{
 Polyn pa;
 Polyn pb;
 Polyn pc;
 InitPolyn(pa);
 InitPolyn(pb);
 InitPolyn(pc);

 int m;
 int select = 1;
 while(select)
 {
  cout<<"***********************************"<<endl;
  cout<<"*[1]创建多项式pa  [2]创建多项式pb *"<<endl;
  cout<<"*[3]显示多项式pa  [4]显示多项式pb *"<<endl;
  cout<<"*[5]多项式相加    [6]多项式相减   *"<<endl;
  cout<<"*[7]多项式相乘    [0]退出系统     *"<<endl;
  cout<<"***********************************"<<endl;
  cout<<"请选择:>";
  cin>>select;
  switch(select)
  {
  case 1:
   cout<<"请输入多项式的项数:>";
   cin>>m;
   CreatePolyn(pa, m);
   break;
  case 2:
   break;
  case 3:
   cout<<"pa = ";
   ShowPolyn(pa);
   cout<<endl;
   break;
  case 5:
   pc = PolynAdd(pa, pb);
   break;
  }
 }
}

 


 

 

0 0
原创粉丝点击