出现segmentation fault错误,debug了一下,发现相加时的while循环一直有segmentation fault

这是链表写一元多项式的和,一直运行不出来和的结果,希望得到帮助,感谢感谢!

```c
#include"stdio.h"
#include"stdlib.h"
typedef struct Ploy{
    float coef;
    int expn;
    struct Ploy* next;
}ploy; 
ploy* creat(ploy* La)
{
    char ch;
    ploy *pa,*q;
    int len=0;
    La=pa=(ploy*)malloc(sizeof(ploy));
    pa->next=NULL;
    printf("\n若输入结束,请输入over!\n"); 
    while(ch!=EOF)
    {
        len++;
        q=(ploy*)malloc(sizeof(ploy));
        printf("请输入第 %d 个元素的系数:",len);
        scanf("%f",&(q->coef));
        printf("请输入第 %d 个元素的指数:",len);
        scanf("%d",&(q->expn));
        ch=getchar();
        ch=getchar();
        q->next=NULL;
        pa->next=q;
        pa=q;    
    }
    return La;
}
ploy* Add(ploy* La,ploy* Lb)
{
    ploy *pa,*pb,*pc,*Lc;
    pa=La->next;
    pb=Lb->next;
    pc=Lc=La;
    float x;
    ploy* pr;
    while(pa && pb){//这里debug时下面三个if语句进行到一半就出现segmentation fault
        if(pa->expn<pb->expn){
            pc->next=pa;
            pc=pa;
            pa=pa->next;
             
        }
        if(pa->expn>pb->expn){
            pc->next=pb;
            pc=pb;
            pb=pb->next;
            
        }
        if(pa->expn==pb->expn){
            x=pa->coef+pb->coef;
                        if(abs(x)<=1.0e-6){
                pr=pa;pa=pa->next;free(pr);
                pr=pb;pb=pb->next;free(pr);
            }elsepc->next=pa;
            pc=pa;
            pc->coef=x;
            pr=pb;
            pa=pa->next;
            pb=pb->next;
            free(pr);}
        }    
    }
    if(!pa){
        while(pa){
            pc->next=pa;
            pc=pa;
            pa=pa->next;
        }    
    }
        if(!pb){
        while(pb){
            pc->next=pb;
            pc=pb;
            pb=pb->next;
        }    
    }
    return Lc;
}
void output(ploy* La){//输出
    ploy* pa;
    pa=La->next;
    printf("\nto\n");
    while(pa){
        printf(" +%.0f*x^%d",pa->coef,pa->expn);
        pa=pa->next;
    }
}
int main()
{
    ploy *La,*Lb;
    La=creat(La);
    output(La);
    Lb=creat(Lb);
    output(Lb);
    La=Add(La,Lb);
    output(La);
    return 0
}

```

你上面pc是怎么来的?没有初始化就使用。仔细想想怎么做。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^