提问C语言递归实现两个有序链表归并且无重复数字?

能够实现归并但不知道如何将重复数字合并或者说覆盖掉,删除
LinkList MergeList(LinkList pa,LinkList pb)
{//递归实现两个有序单链表的归并
LinkList p = NULL;
if(NULL==pa)
{
return pb;
}
else if(NULL==pb)
{
return pb;
}
else
{
if(pa->data < pb->data)
{
p = pa;
p->next = MergeList(pa->next,pb);
}
else
{
p = pb;
p->next = MergeList(pa,pb->next);
}
return p;
}

}
而且会多一个首数字0

LinkList *MergeList(LinkList *pa, LinkList *pb) { //递归实现两个有序单链表的归并
  if (!pa)
    return pb;

  if (!pb)
    return pa;

  Node *p, *q;
  if (pa->data < pb->data) {
    p = pa;
    q = MergeList(pa->next, pb);
  } else {
    p = pb;
    q = MergeList(pa, pb->next);
  }
  while (q && q->data == p->data) // 去重
    q = q->next;
  p->next = q;
  return p;
}