求耐心的【高手】详细解答高程中的又一升序链表合并问题
以下是高程书的例题。看不懂变量的意思。
想请问:
【1】a,b,p,q这四个变量分别做什么用?求详细解答,在每个语句里分别做什么用的?
【2】程序中的思路是如何的?能否详细解释一下?
题目:函数merge(intNode *a,intNode *b)将两个升序链表a和b合并成一个升序链表并返回首指针。
-----
typedef struct element
{
int val;
struct element *next;
}intNode;
intNode *merge(intNode *a,intNode *b)
{ intNode *h=a,*p,*q;
while(b)
{ for(p=h;p&&p->val<b->val;q=p,p=p->next);
if(p==h)___①__; /* h=b */
else ___②__; /* q->next=b */
q=b;b=b->next;
___③___; /* q->next=p */
}
return h;
}