数据结构多项式的相加


#include<stdio.h>
#include<stdlib.h>
#define OVER -1
#define OK 1

typedef int Status;
typedef struct Lnode{
    int expp,coef;
    struct Lnode *next;
}Lnode,*Linklist;

Status Listcreate(Linklist &L,int n)
{
    Linklist p,end1;
    L=(Linklist)malloc(sizeof(Lnode));
    if(!L) exit(OVER);
    L->next=NULL;
    end1=L;
    for(int i=0;i<n;i++)
    {
        p=(Linklist)malloc(sizeof(Londe));
        if(!p) exit(OVER);
        scanf("%d%d",&p->coef,&p->expp);
        p->next=NULL;
        end1->next=p;
        end1=p;
    }
    return OK;
}

Status Listadd(Linklist &La,Linklist &Lb,Linklist &Lc)
{
    Linklist pa,pb,pc,pt;
    Lc=pa=La;
    pa=La->next;
    pb=Lb->next;
    while(pa&&pb)
    {
        if(pa->expp<pb->expp)
        {
            pc->next=pa;pc=pa;pa=pa->next;
        }
        else if(pa->expp>pb->expp)
        {
            pc->next=pb;pc=pb;pb=pb->next;
        }
        else
        {
            pa->coef=pa->coef+pb->coef;
            if(pa->coef)
            {
                pc->next=pa;pc=pa;pa=pa->next;
                pt=pb;pb=pb->next;free(pt);
            }
            else
            {
                pt=pa;pa=pa->next;free(pt);
                pt=pb;pb=pb->next;free(pt);
            }
        }
    }
    pc->next=NULL;
    if(pa) pc->next=pa;
    if(pb) pc->next=pb;
    free(Lb);
    return OK;
}

Status Listprint(Linklist L)
{
    L=L->next;
    while(L)
    {
        printf("%d %d\n",L->coef,L->expp);
        L=L->next;
    }
    return OK;
 } 
 
 int main()
 {
     Linklist La,Lb,Lc;
     int n,m;
     scanf("%d",&n);
     Listcreate(La,n);
     scanf("%d",&m);
     Listcreate(Lb,m);
     Listadd(La,Lb,Lc);
     Listprint(Lc);
     return 0;
 }

数据结构的实验 关于多项式的相加
运行的时候显示问题如下
想知道这是为什么已经如何修改

img