题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。链表结点定义如下:
struct ListNode{ int m_nValue; int m_pNext; };如下图所示,一目了然,比较两个链表的头结点,值小的则并入新的结点,如此循环,可以用递归解决。
//利用递归 ListNode *Merge(ListNode *phead1, ListNode *phead2) { if (phead1==NULL) return phead2; else if (phead2==NULL) return phead1; //新链表的头指针 ListNode *pNewHead=NULL; if (phead1->m_nValue<phead2->m_nValue) { pNewHead=phead1; pNewHead->m_pNext=Merge(phead1->m_pNext,phead2); } else { pNewHead=phead2; pNewHead->m_pNext=Merge(phead1,phead2->m_pNext); } return pNewHead; }
原文地址:http://blog.csdn.net/lsh_2013/article/details/45726435