博客
关于我
反转链表,(5)
阅读量:668 次
发布时间:2019-03-16

本文共 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;}

    转载地址:http://fieqz.baihongyu.com/

    你可能感兴趣的文章
    初次安装webpack之后,提示安装webpack-cli
    查看>>
    使用FileZilla,FTP登录出现错误:FileZilla状态: 不安全的服务器,不支持 FTP over TLS
    查看>>
    Hbase压力测试
    查看>>
    StreamReader & StreamWriter
    查看>>
    C#中的类、方法和属性
    查看>>
    Python爬虫训练:爬取酷燃网视频数据
    查看>>
    Python数据分析入门(十九):绘制散点图
    查看>>
    Callable中call方法和Runnable中run方法的区别
    查看>>
    Linux yum提示Loaded plugins错误的解决方法
    查看>>
    Netty的体系结构及使用
    查看>>
    xshell解决文本粘贴格式错误
    查看>>
    什么是证券型代币?
    查看>>
    Android中获取并设置屏幕亮度
    查看>>
    Swift中使用DispatchGroup分组管理异步任务
    查看>>
    MVVM_Template
    查看>>
    网络+图片加载框架(英文版)
    查看>>
    Python imageio方法示例
    查看>>
    Possible missing firmware
    查看>>
    JAVA BigInteger和BigDecimal类常用方式
    查看>>
    深度学习框架 各种模型下载集合 -- models list
    查看>>