typedef struct Lnode{
    int coef;  // xishu
    int expon;  // zhishu
    struct Lnode *next;
}Lnode,*Link;
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
    int coef;  // xishu
    int expon;  // zhishu
    struct Lnode *next;
}Lnode,*Link;
void initial(Link &L){
        L=(Link)malloc(sizeof(Lnode));
        L->next=NULL;
}
void insert(Link &L){
    int n; Link end,p;
    printf("请输入需要输入的项数:");
    scanf("%d",&n);
    while(n--){
            p=(Link)malloc(sizeof(Lnode));
        scanf("%d",&p->coef);
        scanf("%d",&p->expon);
        end->next=p;
        end = p;
    }
    end->next=NULL;
}
 void bianli(Link L){
    Link p;
    p=L->next;
    if(p->coef<0)  printf("  - ");
        printf("%dx^%d",p->coef,p->expon);
    p=p->next;
   do{
        if(p->coef>0)  printf(" + ");
    printf("%d^%d",p->coef,p->expon);
     p=p->next;
   }while(p!=NULL);

 }
void add(Link &p1,Link &p2,Link &p3){  //p3带有头结点
        Link pa,pb,pc,p;
        pa=p1->next;  pb=p2->next;
        pc=(Link)malloc(sizeof(Lnode));  // 为方便表头插入,先产生一个临时空节点
        p3=pc;
        while(pa&&pb){
        if(pa->expon>pb->expon){
         p=(Link)malloc(sizeof(Lnode));
           p->coef=pa->coef; p->expon=pa->expon;
           p->next=NULL;  pc->next=p; pc=p;
            pa=pa->next;
        }
        else if(pa->expon<pb->expon){
         p=(Link)malloc(sizeof(Lnode));
           p->coef=pb->coef; p->expon=pb->expon;
           p->next=NULL;  pc->next=p; pc=p;
           pb=pb->next;
           }
           else{
             p=(Link)malloc(sizeof(Lnode));
           p->coef=pb->coef+pa->coef; p->expon=pb->expon;
           p->next=NULL;  pc->next=p; pc=p;
           pa=pa->next;
           pb=pb->next;
           }
        }
        pc->next=pa?pa:pb;
}
main(){
        Link a,b,c;
        initial(a);
        initial(b);
        insert(a);
        insert(b);
        add(a,b,c);
        bianli(c);
}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。