本文目录

  • 前言
  • 题目描述
  • 冷月题解
  • 总结一下

前言

链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。本题选自leetcode的206题,感兴趣的小伙伴可以去练习一下。206.反转链表

题目描述

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

冷月题解

因为是操作单链表,而单链表是单向指向的,如果要求空间复杂度为O(1)的情况下,我们只能使用迭代是方式。需要新增加两个指针。冷月把完整实例代码放在博客上了,大家可以进入查看学长冷月带你怒刷LeetCode之反转链表

struct ListNode * cur = head; //指向当前节点

struct ListNode * pre = NULL; //指向上一个节点

一开始,我们链表是如下的形式:

此时head不为空,我们进入第一次循环。
head = head -> next; //指向下一个结点

cur->next = pre; //当前节点 指向 上一个节点
如下图所示:

这时,我们已经将第一个节点指向了pre,也就是说将第一个节点反转了过来,下一步我们要将pre和cur移动一下位置,方便下一次循环。

pre = cur; //指针域往后挪动

cur = head; //指针域往后挪动
如下图所示:

这时已经完成了第一次循环的所有步骤,我们成功将第一个节点反转,并且从第二个节点开始成为了新的表头,大家可以与第一张图片对比一下,是不是很相似呢?然后进入第二次循环,循环的步骤方法和第一次的一模一样,第二次循环完后的图示如下:

再经过四次循环后,cur = head = NULL,将会跳出循环,我们只需要将pre 返回出去即可,获得反转后的链表。图示如下:

完整代码如下:

/**
公众号:学长冷月
**/
struct ListNode* reverseList(struct ListNode* head){struct ListNode * cur = head;  //指向当前节点struct ListNode * pre = NULL; //指向上一个节点while(head){ //如果链表不为空则进入循环head = head -> next; //指向下一个结点cur->next = pre; //当前节点 指向 上一个节点pre = cur; //指针域往后挪动cur = head; //指针域往后挪动}return pre;
}

总结一下

这道反转链表的题属于很基础的入门题,是每位小伙伴都应该掌握的难度。光说不练假把式,大家要先理解,然后将代码自己实现一下才能将知识转变成自己的。冷月会在博客上首发《怒刷LeetCode》系列文章,感兴趣的小伙伴可以给冷月的博客加一个收藏冷月的博客,方便获取最新的推送~

如果这篇博文有帮助到您,可以帮冷月点一个赞或者加一个关注哦!

欢迎关注我的公众号:学长冷月,免费获得独家整理的学习资源和日常干货推送。
如果您对我的专题内容感兴趣,也可以关注我的博客:www.guoyu7.com

学长冷月带你怒刷LeetCode之反转链表相关推荐

  1. LeetCode 206. 反转链表 Reverse Linked List

    5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...

  2. 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?

    [导读]985研究生,学计算机视觉,出来后找不到工作?新智元带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都 ...

  3. remoteapp提示找不到远程计算机_知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...

    (给算法爱好者加星标,修炼编程内功) 来源:新智元 [新智元导读]985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然 ...

  4. 知乎高赞:985 计算机视觉毕业后找不到工作怎么办?怒刷 leetcode,还是另寻他路?...

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 转自:新智元 [导读]:985研究生,学计算机视觉,出来后找不到工作?本文带你看看这个70万浏览量问题下的答案 ...

  5. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  6. Leetcode 系列 | 反转链表

    点击上方"算法猿的成长",选择"加为星标" 第一时间关注 AI 和 Python 知识 最近会更新一个 leetcode 的刷题系列,每次更新一道题目,并且通过 ...

  7. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  8. leetcode - 206. 反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...

  9. 薪资被倒挂?是怒刷 LeetCode,还是另寻他路?

    不知道从啥时候开始,薪资倒挂这个词就开始火起来了. 其实可以理解为一年比一年高的入行门槛以及愈发激烈的同行竞争.这也无可厚非,大量的互联网公司出现,市场上的程序员需求急剧上升,程序员获得了薪资市场的优 ...

最新文章

  1. solrj操作单机solr
  2. Asp.net Web.Config - 配置元素customErrors
  3. Pytorch v0.4.1发布:添加频谱范数,自适应Softmax,优化CPU处理速度,添加异常检测NaN等
  4. 检测线程是否存活代码!
  5. 计算机net use命令使用,网络命令net之net use应用
  6. 2022年后人工智能/深度学习八大应用方向
  7. h5禁用浏览器下载视频_Flash正式被全球禁用,只有中国版还活着
  8. 图像数集据增广的15+种功能总结和Python代码实现
  9. eclipse-阶段三-Server被关闭后消失,如何打开
  10. 使用servlet原生API作为参数
  11. dd命令打包多个文件_Android shell 下dd命令浅析
  12. atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect
  13. 高性能MySQL系统思维导图
  14. “大健康”VS“小产品”,倍轻松、SKG的“年轻”生意经
  15. Infor与云的不解之缘
  16. 校内题目T2691 桶哥的问题——送桶
  17. GBase 8c基础操作
  18. java布道师_JavaWeb主管布道师
  19. 深入理解Spring两大特性:IoC和AOP
  20. Android shape画一个圆角虚线框

热门文章

  1. 楚琳Web打印控件可以在MVC中调用嘛?
  2. 模板字符串(` `)
  3. 阿里:不清除35岁以上的P8员工!
  4. php获取ascii的值,php chr() ord() 获取ASCII编码 中文截取
  5. C语言学习记录——유 分支与循环(2)
  6. BTA 常问的 Java基础40道常见面试题及详细答案
  7. css应该写在html语言的哪个标记里,CSS布局的选择题
  8. TCP协议和UDP协议的区别及其应用
  9. java 事件流_JDK14的新特性:JFR,JMC和JFR事件流
  10. 苹果x电池容量_关于苹果18W PD快充你想知道的,全都在这里了