题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入链表 1 和链表 2,则合并之后的升序链表如链表 3 所示。链表结点定义如下:
struct listNode
{
int m_nValue;
listNode * m_pNext;
};
链表1: 【1】【3】【5】【7】
链表2: 【2】【4】【6】【8】
链表3: 【1】【2】【3】【4】【5】【6】【7】【8】
listNode * mergeList( listNode * pAhead, listNode * pBhead )
{
if( NULL == pAhead ) return pBhead;
if( NULL == pBhead ) return pAhead;
listNode * pNewHead = NULL, * pTemp = NULL;
if( pAhead->m_nValue < pBhead->m_nValue )
{
pNewHead = pAhead;
pAhead = pAhead->m_pNext;
}
else
{
pNewHead = pBhead;
pBhead = pBhead->m_pNext;
}
pTemp = pNewHead;
while( NULL != pAhead && NULL != pBhead )
{
if( pAhead->m_nValue < pBhead->m_nValue )
{
pTemp->m_pNext = pAhead;
pTemp = pAhead;
pAhead = pAhead->m_pNext;
}
else
{
pTemp->m_pNext = pBhead;
pTemp = pBhead;
pBhead = pBhead->m_pNext;
}
}
if( NULL != pAhead )
pTemp->m_pNext = pAhead;
if( NULL != pBhead )
pTemp->m_pNext = pBhead;
return pNewHead;
}