#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode{
int coef;//系数
int index;//指数
struct LinkNode *next;
}LinkNode,*LinkList;
LinkList createLinkNode(){
LinkList L=(LinkList) malloc(sizeof(LinkNode));
L->next=NULL;
printf("请输入多项式(系数,指数):");
LinkNode *q=L,*p;
int coef,index;
scanf("%d,%d",&coef,&index);
while(!(coef==0&&index==0)){
p=(LinkNode *)malloc(sizeof(LinkNode));
p->next=NULL;
p->coef=coef;
p->index=index;
q->next=p;
q=p;
printf("请继续输入多项式(系数,指数):");
scanf("%d,%d",&coef,&index);
}
return L;
}
void add(LinkList L1,LinkList L2){
LinkNode *p1,*temp;
while(L2->next!=NULL){
p1=L1;
while(p1->next!=NULL&&p1->next->index!=L2->next->index){
p1=p1->next;
}
temp=L2->next;
L2->next=temp->next;
temp->next=NULL;
if(p1->next==NULL){
temp->next=p1->next;
p1->next=temp;
}else{
p1->next->coef+=temp->coef;
free(temp);
if(p1->next->coef==0){
temp=p1->next;
p1->next=temp->next;
free(temp);
}
}
}
free(L2);
}
int main(){
LinkList L1=createLinkNode();
LinkList L2=createLinkNode();
add(L1,L2);
LinkNode *p=L1->next;
if(p==NULL)return 0;
while(p!=NULL&&p->next!=NULL){
printf("%dx^%d+",p->coef,p->index);
p=p->next;
}
if(p!=NULL)printf("%dx^%d",p->coef,p->index);
return 0;
}
网友评论