zoukankan      html  css  js  c++  java
  • 排序两个排序的链表----递归非递归实现

     ListNode* Merge1(ListNode* pHead1, ListNode* pHead2)
     {
         if(pHead1 == NULL)
             return pHead2;
         else if(pHead2 == NULL)
             return pHead1;
         
         ListNode* pMergedHead = NULL;
         
         if(pHead1->m_nValue < pHead2->m_nValue)
         {
             pMergedHead = pHead1;
             pMergedHead->m_pNext = Merge1(pHead1->m_pNext, pHead2);
         }
         else
          {
             pMergedHead = pHead2;
             pMergedHead->m_pNext = Merge1(pHead1, pHead2->m_pNext);
          }
         
         return pMergedHead;
     }
       ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
        {
          if(pHead1 == NULL)
             return pHead2;
          if(pHead2 == NULL)
              return pHead1;
     
          ListNode* NewHead=NULL;
            ListNode* temp=NULL;
            ListNode* pNode1 = pHead1;
            ListNode* pNode2 = pHead2;
            while(pNode1!=NULL && pNode2!=NULL)
            {
                if(NewHead==NULL)
                {
                    if(pNode1->val <= pNode2->val)
                    {
                        NewHead =pNode1;
                        pNode1 = pNode1->next;
                    }
                    else
                    {
                        NewHead =pNode2;
                        pNode2 = pNode2->next;
                    }
                    temp=NewHead;
                }
                else
                {
                    if(pNode1->val <= pNode2->val)
                    {
                        temp->next=pNode1;
                        pNode1=pNode1->next;
                        //temp->next=NULL;
                        temp=temp->next;
                    }
                    else 
                    {
                        temp->next=pNode2;
                        pNode2=pNode2->next;
                        //temp->next=NULL;
                        temp=temp->next;
                    }
                }
     
            }
            if(pNode1==NULL && pNode2!=NULL)
                temp->next=pNode2;
            else if(pNode2==NULL && pNode1!=NULL)
                temp->next=pNode1; 
                
            return NewHead;
        }
  • 相关阅读:
    CentOS 用命令访问网页
    ngalian(一)2:安装npm环境
    数仓建设原则探讨
    C#中获取系统时间 LZU
    判断是否是数字类 LZU
    Extjs中ComboBoxTree的实现 LZU
    SQL之学生选课数据库 LZU
    如何看书 LZU
    面向对象思想 LZU
    C#控件命名规范 LZU
  • 原文地址:https://www.cnblogs.com/xiaodi914/p/5797200.html
Copyright © 2011-2022 走看看