C语言:一元多项式计算

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

#include

#include

#include

#define LEN sizeof(node)

//结点构造

typedef struct polynode

{

int coef; //系数

int exp; //指数

struct polynode *next;

}node;

node * create(void)

{

node *h,*r,*s;

int c,e;

h=(node *)malloc(LEN);

r=h;

printf("系数:");

scanf("%d",&c);

printf("指数:");

scanf("%d",&e);

while(c!=0)

{

s=(node *)malloc(LEN);

s->coef=c;

s->exp=e;

r->next=s;

r=s;

printf("系数:");

scanf("%d",&c);

printf("指数:");

scanf("%d",&e);

}

r->next=NULL;

return(h);

}

void polyadd(node *polya, node *polyb) {

node *p,*q,*pre,*temp;

int sum;

p=polya->next;

q=polyb->next;

pre=polya;

while(p!=NULL&&q!=NULL)

{

if(p->exp>q->exp)

{

pre->next=p;

pre=pre->next;

p=p->next;

}

else if(p->exp==q->exp)

{

sum=p->coef+q->coef;

if(sum!=0)

{

p->coef=sum;

pre->next=p;pre=pre->next;p=p->next;

temp=q;q=q->next;free(temp);

}

else

{

temp=p->next;free(p);p=temp;

temp=q->next;free(q);q=temp;

}

}

else

{

pre->next=q;

pre=pre->next;

q=q->next;

}

}

if(p!=NULL)

pre->next=p;

else

pre->next=q;

}

void print(node * p)

{

while(p->next!=NULL)

{

p=p->next;

printf(" %d*x^%d",p->coef,p->exp);

}

}

void main()

{

node * polya,* polyb;

printf("请输入第一个多项式的系数和指数\n(输入系数为0时,表示多项式的输入结束):\n");

polya=create();

printf("多项式为:");

print(polya);

printf("\n\n请输入第二个多项式的系数和指数\n(输入系数为0时,表示多项式的输入结束):\n");

polyb=create();

printf("多项式为:");

print(polyb);

printf("\n\n多项式和为:");

polyadd(polya,polyb);

print(polya);

printf("\n");

getchar();

}

相关文档
最新文档