// 合并两个已序单链表
PSListNode MergeList(PSListNode pL1, PSListNode pL2)
{
PSListNode pNewHead = NULL ;
PSListNode pL1Node = pL1 ;
PSListNode pL2N0de = pL2 ;
PSListNode pNode = NULL ;
PSListNode pTailNode = NULL ;
if (pL1 == NULL)
{
return pL2 ;
}
if (pL2 == NULL)
{
return pL1 ;
}
if (pL1Node->data > pL2N0de->data)
{
pNode = pL2N0de;
pL2N0de = pL2N0de->pNext;
}
else
{
pNode = pL1Node;
pL1Node = pL1Node->pNext;
}
pNewHead = pNode;
pTailNode = pNode;
while (pL1Node&&pL2N0de)
{
if (pL1Node->data > pL2N0de->data)
{
pNode = pL2N0de;
pL2N0de = pL2N0de->pNext;
}
else
{
pNode = pL1Node;
pL1Node = pL1Node->pNext;
}
pTailNode->pNext = pNode;
pTailNode = pTailNode->pNext;
}
if (pL1Node == NULL )
{
pTailNode->pNext = pL2N0de;
}
else
{
pTailNode->pNext = pL1Node;
}
return pNewHead;
}
void Print(PSListNode pHead)
{
PSListNode pCurNode = pHead ;
while (pCurNode)
{
printf( "%d->", pCurNode->data);
pCurNode = pCurNode->pNext;
}
printf( "NULL\n");
}