该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
# include
# include typedef struct node
{
float xishu;
int zhishu;
int flag;
struct node *next;
}Lnode; Lnode *input() //输入指数和系数,并创建链表
//Lnode *input(void)
{
Lnode *headp=NULL;
Lnode *p=NULL;
//Lnode *q=NULL,*headq=NULL;
p=(Lnode *)malloc(sizeof(Lnode));
headp=p;
printf("请按照“系数,指数”的形式输入每一个子项!\n");
printf("系数和指数同时为0时输入结束!\n");
do
{
scanf("%f,%d",&p->xishu,&p->zhishu);
p->flag=0;
p->next=(Lnode *)malloc(sizeof(Lnode));
p=p->next;
p->next=NULL;
}while((p->xishu!=0)&&(p->zhishu!=0)); /*q=(Lnode *)malloc(sizeof(struct node));
headq=q;
printf("请输入第二个多项式,按照“系数,指数”的形式输入每一个子项!\n");
printf("系数和指数同时为0时输入结束!\n");
do
{
scanf("%f,%d",&q->xishu,&q->zhishu);
q->flag=0;
q->next=(Lnode *)malloc(sizeof(struct node));
q=q->next;
q->next=NULL;
}while((q->xishu!=0)&&(q->zhishu!=0))*/
return headp;
} Lnode *add(Lnode *p,Lnode *q)
{
Lnode *r=NULL,*headr=NULL;
r=(Lnode *)malloc(sizeof(struct node));
headr=r;
while((p->next!=NULL)&&(q->next!=NULL))
{
if(p->zhishu==q->zhishu)
{
r->xishu=p->xishu+q->xishu;
r->zhishu=p->zhishu;
r->flag=p->flag=q->flag=1;
r->next=NULL;
}
else if(p->zhishu>q->zhishu)
{
r->xishu=p->xishu;
r->zhishu=p->zhishu;
r->flag=p->flag=1;
r->next=NULL;
}
else
{
r->xishu=q->xishu;
r->zhishu=q->zhishu;
r->flag=q->flag=1;
r->next=NULL;
} p=p->next;
q=q->next;
r->next=(Lnode *)malloc(sizeof(struct node));
r=r->next;
r->next=NULL;
} return headr;
} void print(Lnode *r)
{
while(r!=NULL)
{
printf("%fX^%d+",r->xishu,r->zhishu);
r=r->next;
}
printf("\b");
} int main()
{
Lnode *p,*q,*sum;
printf("请输入第一个多项式:\n");
p=input;
printf("请输入第二个多项式:\n");
q=input;
sum=add(p,q);
printf("两个多项式的和为:");
print(sum);
return 0;
}