面试题整理13 合并排序链表去重
2014-03-08 09:07
375 查看
题目:合并两个排序链表,去掉重复元素
struct ListNode { int m_nValue; ListNode* m_pNext; }; using namespace std; ListNode* MergeLists(ListNode* pHead1,ListNode* pHead2) { if(pHead1 == NULL && pHead2 == NULL) return NULL; if(pHead1 == NULL && pHead2 != NULL) return pHead2; if(pHead1 != NULL && pHead2 == NULL) return pHead1; ListNode* newListHead = pHead1; if( pHead1->m_nValue > pHead2->m_nValue ) { swap(pHead1,pHead2); } while( pHead1!= NULL && pHead2 != NULL) { while( pHead1 != NULL && pHead1->m_pNext != NULL && pHead1->m_pNext->m_nValue < pHead2->m_nValue) { //qu chong while( pHead1->m_pNext != NULL && pHead1->m_nValue == pHead1->m_pNext->m_nValue) { pHead1->m_pNext = pHead1->m_pNext->m_pNext; } if( pHead1->m_pNext->m_nValue < pHead2->m_nValue) { pHead1 = pHead1->m_pNext; } } if( pHead1!=NULL && pHead1->m_nValue == pHead2->m_nValue) { while( pHead2 != NULL && pHead2->m_nValue == pHead1->m_nValue ) { pHead2 = pHead2->m_pNext; } } ListNode* tempNode = pHead1->m_pNext; pHead1->m_pNext = pHead2; pHead1 = pHead2; pHead2 = tempNode; } return newListHead; }
相关文章推荐
- 近期面试题整理(二叉树的中序遍历、合并排序链表数组)
- 剑指offer——面试题17:合并两个排序的链表
- 【剑指offer】3.4代码的鲁棒性——面试题17:合并两个排序的链表
- 【剑指Offer】面试题17:合并两个排序的链表
- 面试题整理 4 合并两个排序的数组
- 剑指offer 面试题17 合并两个排序的链表
- 剑指offer代码解析——面试题17合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表
- 面试题:合并两个排序的链表
- 剑指offer-面试题 17:合并两个排序的链表
- 剑指offer 面试题17 合并两个排序的链表-Java实现
- 剑指offer-面试题17:合并两个排序的链表
- 剑指offer 面试题17—合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表(非递归方法和递归方法)
- 面试题17:合并两个排序链表
- 剑指Offer:面试题17——合并两个排序的链表
- 《剑指Offer》面试题17:合并两个排序的链表
- 面试题17:合并两个排序的链表
- 面试题 17:合并两个排序的链表
- 165. 合并两个排序链表(merge-two-sorted-lists)(c++)----lintcode面试题之链表