c语言,多项式加法,链表问题

问题遇到的现象和发生背景

用链表表示多项式,并实现多项式的加法运算

输入格式:
输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int xi;
int zhi;
struct Node *next;
}node;

node *newl(node p)
{
p=(node
)malloc(sizeof(node));
p->next=NULL;
return p;
}
void get(node *p,int x,int z)
{
node l;
l=(node
)malloc(sizeof(node));
l->xi=x;
l->zhi=z;
l->next=NULL;
p->next=l;
p=l;
}
void jia(node *pa,node *pb,node *pc)
{
pa=pa->next;
pb=pb->next;
while(pa!=NULL&&pb!=NULL)
{
if(pa->zhizhi)
{
get(pc,pa->xi,pa->zhi);
pa=pa->next;
}
if(pa->zhi>pb->zhi)
{
get(pc,pb->xi,pb->zhi);
pb=pb->next;
}
if(pa->zhi==pb->zhi)
{
get(pc,pa->xi+pb->xi,pa->zhi);
pa=pa->next;
pb=pb->next;
}
}
while(pa!=NULL)
{
pc->next=pa;
}
while(pb!=NULL)
{
pc->next=pb;
}
}

void put(node *p)
{
p=p->next;
while(p!=NULL){
printf("%d,%d",p->xi,p->zhi);
p=p->next;
}
}
int main()
{
node *pa,*pb,*ha,*hb;
pa=newl(pa);
pb=newl(pb);
ha=pa;
hb=pb;
int x,z;
for(int i=0;;i++)
{
scanf("%d,%d",&x,&z);
if(x==0&&z==0) break;
else get(pa,x,z);
}
for(int i=0;;i++)
{
scanf("%d,%d",&x,&z);
if(x==0&&z==0) break;
else get(pb,x,z);
}
node *pc;
node *hc;
pc=newl(pc);
hc=pc;
jia(ha,hb,pc);
put(hc);
}

运行结果及报错内容

一直显示段错误这是咋回事

我的解答思路和尝试过的方法
我想要达到的结果