当前位置:   article > 正文

合并两个排序的链表使之依然有序(不开辟新空间在原链表上操作的非递归版本)_不开辟新空间,合并两个有序表

不开辟新空间,合并两个有序表
  1. ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
  2. {
  3. if ( NULL ==pHead1 )
  4. return pHead2;
  5. else if ( NULL == pHead2 )
  6. return pHead1;
  7. ListNode* pLessHead = NULL;
  8. ListNode* pGreaterHead = NULL;
  9. ListNode* pRet = NULL; //注意保存"头"为了之后返回
  10. ListNode* pNext = NULL;
  11. if ( pHead1->val <= pHead2->val ){
  12. pLessHead = pHead1;
  13. pGreaterHead = pHead2;
  14. }
  15. else{
  16. pLessHead = pHead2;
  17. pGreaterHead = pHead1;
  18. }
  19. pRet = pLessHead;
  20. //仔细分析逻辑就会发现,不可能运行到 pLessHead为NULL
  21. while ( NULL != pGreaterHead ){
  22. if ( pLessHead->val <= pGreaterHead->val ){
  23. if ( NULL == pLessHead->next ){
  24. pLessHead->next = pGreaterHead;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码领袖开发者/article/detail/62944
推荐阅读
相关标签
  

闽ICP备14008679号