美文网首页
算法面试:链表转置

算法面试:链表转置

作者: 云涌海啸 | 来源:发表于2020-03-28 00:05 被阅读0次

    //单链表定义

    class ListNode{
            int m_nValue;
            ListNode pNext;
    };
    

    普通的循环的方法。

    //单链表逆置实现

    ListNode ReverseList(ListNode pHead)
    {
        if (pHead == NULL || pHead->pNext == NULL)
        {
            retrun pHead;
        }
      
        ListNode pRev = NULL;
        ListNode pCur = pHead;
        while(pCur != NULL)
        {
            ListNode pTemp = pCur;   // 步骤①
            pCur = pCur->pNext;       // 步骤②
            pTemp->pNext = pRev;      // 步骤③
            pRev = pTemp;
        }
        return pRev;
    }
    

    递归调用方法

    ListNode ReverseList(ListNode pHead)
    {
        ListNode p = NULL;
        if (pHead == NULL || pHead->pNext == NULL)
        {
            return pHead;
        } else {
            p = ReverseList(pHead -> pNext);
            p->pNext = pHead;
            pHead -> pNext = NULL;
        }
       
        return  pHead;
    }
    

    相关文章

      网友评论

          本文标题:算法面试:链表转置

          本文链接:https://www.haomeiwen.com/subject/rdyduhtx.html