include
#include
struct node
{
int val;
struct node *pNext;
};
struct node *gen(int Num)
{
struct node *pHead = NULL;
for(int i = Num; i > 0; i--){
struct node * p = (struct node *)malloc(sizeof(struct node));
p -> val = i;
p -> pNext = pHead;
pHead = p;
}
return pHead;
}
void display(struct node *pHead)
{
while( pHead != NULL)
{
printf("%d ", pHead->val);
pHead = pHead->pNext;
}
printf("\n");
}
struct node * merge(struct node *pHeadA, struct node *pHeadB)
{
if(pHeadA == NULL )
return pHeadB;
if(pHeadB == NULL )
return pHeadA;
if(pHeadA -> val < pHeadB -> val)
{
pHeadA -> pNext = merge(pHeadA -> pNext, pHeadB);
return pHeadA;
}
else
{
pHeadB -> pNext = merge(pHeadA, pHeadB -> pNext);
return pHeadB;
}
}
int main()
{
struct node *pHead = gen(10);
display(pHead);
struct node *pHeadB = gen(10);
pHead = merge(pHead, pHeadB);
display(pHead);
}