美文网首页
链表反转

链表反转

作者: 宇文黎琴 | 来源:发表于2017-05-05 22:43 被阅读9次

    需要注意的点

    • 一次只处理一个或者一对节点
    • 给传入的指针备份
    • 考虑好各种情况,比如空指针和只有一个节点的情况。
    ListNode* reverseLinkedList(ListNode* pHead)
    {
        ListNode* pPrev = NULL;
        ListNode* pNode = pHead;
        ListNode* pNext = NULL;
    
        while(pNode)
        {
            pNext = pNode->next;
            pNode->next = pPrev;
    
            pPrev = pNode;
            pNode = pNext;
        }
    
        return pPrev;
    }
    

    递归的方法做

    ListNode* reverseLinkedList(ListNode* pHead)
    {
        if (pHead == NULL || pHead->next == NULL)
        {
            return pHead;
        }
        else
        {
            ListNode* pNewHead = reverseLinkedList(pHead);
            pNewHead->next = pHead;
            pHead->next = NULL;
            return pHead;
        }
    }
    

    相关文章

      网友评论

          本文标题:链表反转

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