方法1:迭代法

代码:

#include<iostream>
using namespace std;

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
ListNode* reverseList(ListNode* head) {

ListNode*cur = NULL;

ListNode*pre = head;

if(head == NULL||head->next==NULL)
{
return head;
}

while(pre!=NULL)
{
ListNode* p = pre->next;
pre->next = cur;
cur = pre;
pre = p;
}
return cur;
}
};

int main()
{
ListNode* head = new ListNode(1);
ListNode* sec = new ListNode(4);
ListNode* thr = new ListNode(5);
ListNode* fou = new ListNode(9);

head->next = sec;
sec->next = thr;
thr->next = fou;
fou->next = nullptr;

Solution s;
ListNode*p_head = s.reverseList(head);

while(p_head!=nullptr)
{
cout <<p_head->val<<endl;
p_head = p_head->next;
}
}

方法2:递归

代码:

ListNode* reverseList_1(ListNode* head)
{
if(head==NULL||head->next==NULL)
{
return head;
}
ListNode* cur = reverseList_1(head->next);
head->next->next = head;
head->next = NULL;
return cur;
}

剑指offer反转链表(C++实现|测试用例|迭代法和递归法)相关推荐

  1. 剑指offer -- 反转链表

    先摆明重要性 剑指offer -- 反转链表  校招原题 解法一:迭代 翻转 即 将所有节点的next指针指向前驱节点. 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存 ...

  2. 【链表】剑指offer:反转链表

    描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头. 要求:空间复杂度 O(1),时间复杂度 O(n) . 当输入链表{1 ...

  3. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  4. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  5. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  6. 每日一题——剑指 Offer24反转链表

    如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货. 文章目录 1 题目 2 思路 3 代码 4 小结 1 题目 剑指 Offer 24. 反转链表 定义一个函数,输入 ...

  7. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...

  8. 剑指offer之链表续

    面试题17:合并两个有序链表 这道题用递归,很容易实现,但是一定要注意代码鲁棒性 下面是源码: public static ListNode MergeList(ListNode head1,List ...

  9. 《剑指offer》-- 链表中倒数第k个节点、反转链表、合并两个排序的链表

    一.链表中倒数时第k个节点: 1.题目: 输入一个链表,输出该链表中倒数第k个结点. 2.解题思路:单链表具有单向移动的特性. (1)第一种:先遍历链表,算出链表节点数count,第二次直接遍历到第c ...

最新文章

  1. openface 和openpose(pytorch)剪枝之路
  2. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
  3. 怎么样才算是精通 Python?
  4. python全栈开发要学些什么_如何迅速学习Python 全栈开发?
  5. poj-2828 Buy Tickets ***
  6. 传江民总裁王江民因心脏病突发逝世 享年59岁
  7. qt 设置串口起始位_【IT专家】Qt:如何设置主窗口的初始位置?
  8. 惠普照片打印软件_被看错的打印机?原来打印机还可以这么玩
  9. 【精彩实况】第三届大数据科学与工程国际会议
  10. win10服务器文件夹显示不全,如何让Win10文件夹始终显示功能区有哪些方法
  11. 软件中Undo(撤回)和Redo(重做)的实现
  12. Python判断字符串是否为数字(数字、小数、负数、负小数、0)
  13. python读取二进制文件_python中读写二进制文件
  14. 共享文件夹----详细教程
  15. teredo 服务器无响应,teredo 服务器能ping通但就是连不上
  16. 谷歌要收购这家脑电波控制器公司
  17. Acro Design Pro vue - table 行点击高亮显示
  18. 数据仓库工程师面经(未完)
  19. 从零开始的MySQL教程——下
  20. 爬虫系列:某家小区房产信息及POI数据获取

热门文章

  1. 关于ALTERA的FPGA的弱上拉问题
  2. 强制浏览器使用兼容模式,Web.config,httpProtocol
  3. webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
  4. 【python数据挖掘课程】二十九.数据预处理之字符型转换数值型、标准化、归一化处理
  5. [数据库] Navicat for Oracle设置唯一性和递增序列实验
  6. 【数据结构与算法】之深入解析“平衡二叉树”的求解思路与算法示例
  7. OpenGL之利用模型视图矩阵和投影矩阵让球体自动旋转
  8. 和程序员在一起是怎样的体验
  9. 大数据 互联网架构阶段 Nginx的使用
  10. 大数据WEB阶段Maven安装配置与使用