反转一个单链表的循环和递归实现

来源:互联网 发布:mac的qq管家不能登陆 编辑:程序博客网 时间:2024/06/07 16:43
// 方法一, 递归实现ListNode* ReverseList(ListNode* pHead){    return ReverseListRecursive(NULL,pHead); }// 返回反转后的头结点ListNode* ReverseListRecursive(ListNode* pPrev, ListNode* pNode){    // 空链表    if (pNode == NULL)    {        return NULL;    }    // pNode为原链表的尾节点    if (pNode->m_pNext == NULL)    {        pNode->m_pNext = pPrev;        return pNode;    }    ListNode* pNext = pNode->m_pNext;    pNode->m_pNext = pPrev;        return ReverseListRecursive(pNode, pNext);}


// 方法二,循环实现ListNode* ReverseList(ListNode* pHead){    ListNode* pReversedHead = NULL;    ListNode* pNode = pHead;    ListNode* pPrev = NULL;    while(pNode != NULL)    {        ListNode* pNext = pNode->m_pNext;        if(pNext == NULL)            pReversedHead = pNode;        pNode->m_pNext = pPrev;        pPrev = pNode;        pNode = pNext;    }    return pReversedHead;}


原创粉丝点击