哪里有问题?求解答,数据结构算法的问题

/*
设计一个算法,将两个非递减的链表合并成一个非递增的有序链表
要求使用原来的存储空间,不开辟新的空间,表中允许有重复的数据。
/
/

我的思路是:
使用L1的头结点作为新表L3的头结点,然后让L1头结点的指针域置空,
从L1和L2中选择较大的结点,使用头插法插入到L3的后面,
为什么运行不了?求大神解答!
*/
void Combine(LinkList &L1,LinkList &L2,LinkList &L3){
struct LNode *pa,*pb,*pc;
pa=L1->next;
pb=L2->next;
L1->next=NULL;//将L1的头指针置空
L3=L1;
while(pa&&pb){
if(pa->data>=pb->data){
struct LNode *q;
q=pa;
if(L3->next==NULL){
L3->next=q;
q->next=NULL;
}
q->next=L3->next;
L3->next=q;
pa=pa->next;
}else{
struct LNode *q;
q=pb;
if(L3->next==NULL){
L3->next=q;
q->next=NULL;
}
q->next=L3->next;
L3->next=q;
pb=pb->next;
}
}
while(pa){//B表归并完毕
struct LNode *q;
q=pa;
q->next=L3->next;
L3->next=q;
}
while(pb){//A表归并完毕
struct LNode *q;
q=pb;
q->next=L3->next;
L3->next=q;
}
//pc->next=pa?pa:pb;
//delete L2;
}

http://www.cnblogs.com/Winoval/p/4021628.html