多项式四则运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多项式四则运算

运行图:

源代码:

// 多项式加减乘除-02.cpp : 定义控制台应用程序的入口点。//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

#include

#include

typedef struct Polynomial

{

float coef;

int expn;

struct Polynomial *next;

}*Polyn,Polynomial;

void Insert(Polyn p,Polyn h)

{

if(p->coef==0)

free(p);

else

{

Polyn q1,q2;

q1=h;

q2=h->next;

while(q2&&p->expnexpn)

{

q1=q2;

q2=q2->next;

}

if(q2&&p->expn==q2->expn)

{

q2->coef+=p->coef;

free(p);

if(!q2->coef)

{

q1->next=q2->next;

free(q2);

}

}

else

{

p->next=q2;

q1->next=p;

}

}

}

Polyn CreatePolyn(Polyn head,int m)

{

int i;

Polyn p;

p=head=(Polyn)malloc(sizeof(struct Polynomial));

head->next=NULL;

for(i=0;i

{

p=(Polyn)malloc(sizeof(struct Polynomial));

printf("请输入第%d项的系数与指数:",i+1);

scanf_s("%f %d",&p->coef,&p->expn);

Insert(p,head);

}

return head;

}

void DestroyPolyn(Polyn p)

{

Polyn q1,q2;

q1=p->next;

q2=q1->next;

while(q1->next)

{

free(q1);

q1=q2;

q2=q2->next;

}

}

void PrintPolyn(Polyn P)

{

Polyn q=P->next;

int flag=1;

if(!q)

{

putchar('0');

printf("\n");

return;

}

while (q)

{

if(q->coef>0&&flag!=1)

putchar('+');

if(q->coef!=1&&q->coef!=-1)

{

printf("%g",q->coef);

if(q->expn==1) putchar('X');

else

if(q->expn)

printf("X^%d",q->expn);

}

else

{

if(q->coef==1)

{

if(!q->expn)

putchar('1');

else if(q->expn==1)

putchar('X');

else printf("X^%d",q->expn);

}

if(q->coef==-1)

{

if(!q->expn)

printf("-1");

else if(q->expn==1)

printf("-X");

else printf("-X^%d",q->expn);

}

}

q=q->next;

flag++;

}

printf("\n");

}

int compare(Polyn a,Polyn b)

{

if(a&&b)

{

if(!b||a->expn>b->expn)

return 1;

else

if(!a||a->expnexpn)

return -1;

else

return 0;

}

else if(!a&&b)

return -1;

else

return 1;

}

Polyn AddPolyn(Polyn pa,Polyn pb)

{

Polyn qa=pa->next;

Polyn qb=pb->next;

Polyn headc,hc,qc;

hc=(Polyn)malloc(sizeof(struct Polynomial));

hc->next=NULL;

headc=hc;

while(qa||qb)

{

qc=(Polyn)malloc(sizeof(struct Polynomial));

switch(compare(qa,qb))

{

case 1:

{

qc->coef=qa->coef;

qc->expn=qa->expn;

相关文档
最新文档