剑指offer——面试题16:反转链表

牛客网上有《剑指offer》的题目训练https://www.nowcoder.com/activity/oj
一个有关此题图文并茂的博客:http://blog.csdn.net/fx677588/article/details/72357389,有助于理解递归版的代码!!!
递归版本代码的参考网址:http://blog.csdn.net/yunzhongguwu005/article/details/10350339

Solution1:迭代版

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};*/
class Solution {public:ListNode* ReverseList(ListNode* pHead) {ListNode* pReverseHead = NULL;    //反序链表表头,初始化为空ListNode* pNode = pHead;          //当前结点ListNode* pPrev = NULL;           //原链表中当前结点的前一个结点,初始化为空while(pNode != NULL){ListNode* pNext = pNode->next;//原链表中当前结点的下一个结点if(pNext == NULL)pReverseHead = pNode;     //若下一个结点为空,则该结点就是反序链表表头pNode->next = pPrev;//原前一个结点变为当前结点的后继结点pPrev = pNode;//当前结点变为前序结点pNode = pNext;//当前结点更新}return pReverseHead;}
};

Solution2:递归版

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};*/
class Solution {
public:ListNode* ReverseList(ListNode* pHead) {//如果链表为空或者链表中只有一个元素  if(pHead == NULL || pHead->next == NULL)  //链表为空直接返回,而head->next为空是递归基return pHead;else {ListNode* newhead = ReverseList(pHead->next);//先反转后面的链表  pHead->next->next = pHead;//再将当前节点设置为其然来后面节点的后续节点  pHead->next = NULL;  //记得赋值NULL,防止链表错乱return newhead;  //新链表头永远指向的是原链表的链尾}}
};

【重点 递归版】剑指offer——面试题16:反转链表相关推荐

  1. 剑指offer面试题[16]-反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素. 解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的的.很多面试官喜欢出链表相关的问题,就是想通过指针操作来考查应聘者的编 ...

  2. 【重点递归】剑指offer——面试题18:树的子结构

    剑指offer--面试题18:树的子结构 Solution1: 此题答案是抄的书上的,要记忆并熟练运用关于二叉树的递归思想!!! /* struct TreeNode {int val;struct ...

  3. 剑指Offer - 面试题24. 反转链表(遍历/递归)

    1. 题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4-&g ...

  4. 剑指offer面试题24. 反转链表(双指针)

    题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 思路 详见链接 代码 class Solution:def reverseList(self, head:ListN ...

  5. 剑指offer——面试题56:链表中环的入口

    剑指offer--面试题56:链表中环的入口 Solution1: 非常经典的快慢指针套路题.下面这个链接讲解的很详细.其实问题的关键在于为什么快指针的速度一定是慢指针的2倍,3倍或4倍行不行?? 快 ...

  6. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  7. C++版 - 剑指Offer 面试题36:数组中的逆序对及其变形(Leetcode 315. Count of Smaller Numbers After Self)题解

    剑指Offer 面试题36:数组中的逆序对 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 例如, 在数组{7,5, ...

  8. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  9. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告

    剑指offer 重建二叉树 提交网址:  http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&t ...

最新文章

  1. 用Transformer定义所有AI模型!特斯拉AI总监Karpathy发推感叹AI融合趋势
  2. python作者叫什么-Python18:什么是字典
  3. 2引擎帮助文档_【虚幻4】初学者系列教程-《基础入门》#2-学习虚幻4的15个途径...
  4. 中石油训练赛 - 斗地主(bfs)
  5. 【Java TreeMap】测试TreeMap的使用、Comparabe自定义类的自定义排序方式
  6. 我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...
  7. 【期外】 (一)关于LSH :局部敏感哈希算法
  8. Jsp传值方式(乱码问题的解决)
  9. JDBC中使用preparedStatement防止SQL注入
  10. cojs 安科赛斯特 题解报告
  11. Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
  12. CentOS 7.x 安装教程、硬盘分区、LVM、网络配置、软件源配置、制作USB Disk、U盘安装、网络安装...
  13. 关于hibernate检索策略
  14. decorate装饰模式
  15. R3live笔记:从代码看lio线程
  16. Android Studio 3.5.2版本安装流程
  17. ng-zorro中树(nz-tree)的拖拽
  18. 量子计算机中证网,电子行业:全球首款纯硅量子计算机芯片诞生
  19. 垃圾收集器调优相关参数
  20. 基于Python电影院售票系统设计与实现 开题报告

热门文章

  1. 以前看书时记得一些笔记(二),很早了,现在再看都有些看不懂了
  2. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
  3. 局域网即时通讯软件java_如何选择企业即时通讯软件?
  4. 软件测试nextdata函数决策表,软件测试NextDate函数决策表测试法实验报告
  5. 调整jvm参数_JVM源码分析之MetaspaceSize和MaxMetaspaceSize的区别
  6. mysql 字段有正负值的时候 sum无效_京东金融数据分析:MySQL+HIVE的结合应用案例详解...
  7. 数学建模matlab实验报告,数学建模实验.doc
  8. 米家扩展程序初始化超时_一套完整的PLC程序是什么样子
  9. mask rcnn 召回率_搜索推荐召回amp;amp;粗排相关性优化最新进展—2020
  10. carry函数在C语言中用法,CArry的使用完整版.doc