两个单链表的合并为什么输出会没结果呢,是哪里出了问题

如题

#include /* malloc()等 */
#include
#include
#include"pthread.h"/* exit() */
#define OVERFLOW -2
#define ElemType
#define _STDCALL_SUPPORTED
#define Maxsize 100
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
/*线性表的单链表存储结构 */
struct LNode
 {
   int ElemType data[Maxsize];
   struct LNode *next;
 };
typedef struct LNode *LinkList;
void InitList(LinkList *L)
{ /* 操作结果:构造一个空的线性表L */
   *L=(LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */
   if(!*L) /* 存储分配失败 */
     exit(OVERFLOW);
   (*L)->next=NULL; /* 指针域为空 */
}
void CreateList(LinkList *L,int n){
    LinkList q;
    L=(LinkList*)malloc(sizeof(struct LNode));
    (*L)->next=NULL;
    for(int i=n;i>0;--i){
        LinkList q=(LinkList)malloc(sizeof(struct LNode));
        scanf("%s",&(q->data));
        q->next=(*L)->next;
        (*L)->next=q;
    }
}
void ListTraverse(LinkList L)
{
   LinkList p=L->next;
   while(p)
   {
     printf("%3d",p->data);
     p=p->next;
   }
   printf("\n");
}
void MergeList(LinkList La,LinkList Lb,LinkList *Lc){
    LinkList pa;
    LinkList pb;
    LinkList pc;
    pa=La->next;
    pb=Lb->next;
    *Lc=pc=La;
    while(pa&&pb){
        if(pa->data<=pb->data)
        {
            pc->next=pa;
            pc=pa;
            pa=pa->next;
        }
        else
        {
            pc->next=pb;
            pc=pb;
            pb=pb->next;
        }
        pc->next=pa?pa:pb;
        free(Lb);
    }
}
int main(){
static int n,m;
printf("输入表1中的元素个数");
scanf("%d",&n);
printf("输入表2中的元素个数:");
scanf("%d",&m);
LinkList La;
LinkList Lb;
LinkList Lc;
InitList(&La);
InitList(&Lb);
InitList(&Lc);
printf("创建顺序表1\n");
CreateList(&La,n);
printf("创建顺序表2\n");
CreateList(&Lb,m);
MergeList(La,Lb,&Lc);
printf("结果\n");
ListTraverse(Lc);
}

img