C语言一元多项式相加完成主函数程序代码

 

//common.h
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//polylist.h
typedef struct Polynode 
{
int coef;
int exp;
Polynode *next;
}Polynode, *Polylist;
void polycreate(Polylist head)
{
Polynode *rear, *s;
int c,e;
rear=head; /* rear 始终指向单链表的尾,便于尾插法建表*/
scanf("%d,%d",&c,&e); /*键入多项式的系数和指数项*/
while(c!=0) /*若 c=0,则代表多项式的输入结束*/
{
s=(Polynode*)malloc(sizeof(Polynode)); /*申请新的结点*/
s->coef=c;
s->exp=e;rear->next=s; /*在当前表尾做插入*/
rear=s;
scanf("%d,%d",&c,&e); 
}
rear->next=NULL; /*将表的最后一个结点的 next 置 NULL,以示表结束*/
}
⚫ 两个多项式相加
void polyadd(Polylist polya, Polylist polyb)
/*此函数用于将两个多项式相加,然后将和多项式存放在多项式 polya 中,并将多项式 ployb 删除*/
{
Polynode *p, *q, *pre, *temp;
int sum;
p=polya->next; /*令 p 和 q 分别指向 polya 和 polyb 多项式链表中的第一个结点*/
q=polyb->next; 
pre=polya; /* r 指向和多项式的尾结点*/
while (p!=NULL && q!=NULL) /*当两个多项式均未扫描结束时*/
{ 
if (p->exp < q->exp)
/*如果 p 指向的多项式项的指数小于 q 的指数,将 p 结点加入到和多项式中*/
{ 
pre->next=p; 
pre=p; 
p=p->next;
}
else
if ( p->exp == q->exp) /*若指数相等,则相应的系数相加*/
{ 
sum=p->coef + q->coef;
if (sum != 0)
{ 
p->coef=sum;
pre->next=p; 
pre=p;
p=p->next;
temp=q; 
q=q->next; 
free(temp);
}
else
{ 
temp=p;
p=p->next;
free(temp); 
/*若系数和为零,则删除结点 p 与 q,并将指针指向下一个结点*/
temp=q; 
q=q->next;
free(temp);
}
}
else
{ 
pre->next=q;
pre=q; /*将 q 结点加入到和多项式中*/
q = q->next; 
}}
if(p!=NULL) /*多项式 A 中还有剩余,则将剩余的结点加入到和多项式中*/
pre->next=p;
else /*否则,将 B 中的结点加入到和多项式中*/
pre->next=q;
}

void main()
{}

 

你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关图片。便于技术专家团更好地理解问题,并给出解决方案。

您可以点击问题下方的【编辑】,进行补充修改问题。