反转链表,(5)
发布日期:2021-05-19 23:22:36 浏览次数:10 分类:精选文章

本文共 767 字,大约阅读时间需要 2 分钟。

链表反转是一个常见的数据结构操作,其基本思路是从原链表的末尾向前遍历,并将节点逐步反转,形成新的链表。

反转链表的步骤如下:

  • 初始化三个指针,将pNode指向原链表的头节点,pNext和pPrev指向空的节点头。
  • 开始遍历原链表:
    • 当前节点pNode,下一个节点pNext。
    • 如果pNext为空,说明已经到达链表末尾。此时,将pRrev设置为pNode,因为它将成为反转后的链表的头节点。
    • 将pNode的下一个指针(m_pNext)指向pPrev,使其成为反转链表的新末尾。
    • 更新pPrev为pNode,移动pNode到pNext。
  • 重复上述步骤,直到遍历完成。
  • 通过这种方式,每个节点都会被逐步反转,形成新的链表结构。

    优化后的代码如下:

    #include "ListNode.h"using namespace std;ListNode* reversedListNode(ListNode* pHead) {    if(pHead == NULL) return NULL;    ListNode* pRrev = NULL;    ListNode* pNode = pHead;    ListNode* pNext = NULL;    ListNode* pPrev = NULL;    while(pNode != NULL) {        pNext = pNode->m_pNext;        if(pNext == NULL) {            pRrev = pNode;        }        pNode->m_pNext = pPrev;        pPrev = pNode;        pNode = pNext;    }    return pRrev;}
    上一篇:链表合并(6)
    下一篇:从尾部查找一个单向链表的第几个节点。(4)

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年05月07日 03时07分27秒