多项式相加

来源:互联网 发布:淘宝排名搜索查询 编辑:程序博客网 时间:2024/04/28 14:43
//多项式加法
#include<stdio.h>
#include<malloc.h>
typedef struct PloyNode
{
  int cofe;
  int exp;
       struct PloyNode* next;
}PloyNode,*PloyList;
void InitPloy(PloyList* p)
{
 (*p) = (PloyNode*)malloc(sizeof(PloyNode));
 (*p)->next = NULL;
}
void ShowPloy(PloyList p)
{
 PloyNode* s;
 s = p->next;
 printf("该多项式为:");
 while(s->next != NULL)
 {
 if(s->cofe != 0)

  if(s->exp == 0)
    {
   printf("%d+",s->cofe);
   }
  else
  {
printf("%d*x^%d+",s->cofe,s->exp);
  }

s =s->next;

if (s->cofe != 0)

  if(s->exp == 0)
  {
  printf("%d",s->cofe);
  }
  else
  {
  printf("%d*x^%d",s->cofe,s->exp);
}
}
else
{
printf("%d",0);
}
printf("\n");
}
void CreatePloy(PloyList p)
{
int m,n;
PloyNode* r;
PloyNode* s;
r = p;
printf("请输入系数和指数的值((0,0)代表结束)\n");
scanf("%d%d",&m,&n);
while(m!=0||n!=0)
{
s=(PloyNode*)malloc(sizeof(PloyNode));
s->cofe = m;
s->exp = n;
r->next= s;
r=s;
scanf("%d%d",&m,&n);
}
r->next = NULL;
}
//多项式相加
void Add(PloyList pa,PloyList pb,PloyList pc)
{
PloyNode* sa;
PloyNode* sb;
PloyNode* sc;
PloyNode* r;
sa = pa->next;
sb = pb->next;
sc = pc;
while(sa!=NULL&&sb!=NULL)
{
r = (PloyNode*)malloc(sizeof(PloyNode));
if(sa->exp == sb->exp)
{
if(sa->cofe + sb->cofe == 0)
{
   r->exp = sa->exp;
   r->cofe = 0;
sa = sa->next;
sb = sb->next;
sc->next = r;
   sc = r;
}
else
{
   r->exp = sa->exp;
   r->cofe = sa->cofe + sb->cofe;
sa = sa->next;
sb = sb->next;
sc->next = r;
   sc = r;
}
}
else if(sa->exp>sb->exp)
{
r->exp = sa->exp;
r->cofe = sa->cofe;
sa = sa->next;
sc->next = r;
sc = r;

}
else if(sa->exp<sb->exp)
{
r->exp = sb->exp;
r->cofe = sb->cofe;
sb = sb->next;
sc->next = r;
sc = r;
}
}
while(sa!=NULL)
{
r = (PloyNode*)malloc(sizeof(PloyNode));
r->exp = sa->exp;
r->cofe = sa->cofe;
sa = sa->next;
sc->next = r;
sc = r;
}
if(sb!=NULL)
{
r = (PloyNode*)malloc(sizeof(PloyNode));
r->exp = sb->exp;
r->cofe = sb->cofe;
sb = sb->next;
sc->next = r;
sc = r;
}
sc->next = NULL;
}
int main(void)
{
PloyList pa;
PloyList pb;
PloyList pc;//用来存放相加后的多项式
InitPloy(&pa);
InitPloy(&pb);
InitPloy(&pc);
CreatePloy(pa);
ShowPloy(pa);
CreatePloy(pb);
ShowPloy(pb);
Add(pa,pb,pc);//多项式相加
printf("相加后");
ShowPloy(pc);
return 0;
}
1 0
原创粉丝点击