博客
关于我
反转链表,(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/

    你可能感兴趣的文章
    测试tensorflow是否安装成功 出现 SyntaxError: invalid syntax的错误
    查看>>
    Flask--简介
    查看>>
    Frame--Api框架
    查看>>
    Boostrap技能点整理之【网格系统】
    查看>>
    javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
    查看>>
    Git简单理解与使用
    查看>>
    echarts 基本图表开发小结
    查看>>
    adb通过USB或wifi连接手机
    查看>>
    JDK9-15新特性
    查看>>
    TreeSet、TreeMap
    查看>>
    JVM内存模型
    查看>>
    可变长度参数
    查看>>
    3、条件查询
    查看>>
    cordova打包apk更改图标
    查看>>
    GitHub上传时,项目在已有文档时直接push出现错误解决方案
    查看>>
    文件系统的层次结构
    查看>>
    vue(渐进式前端框架)
    查看>>
    vscode设置eslint保存文件时自动修复eslint错误
    查看>>
    Remove Extra one 维护前缀最大最小值
    查看>>
    Linux操作系统的安装与使用
    查看>>