链表逆序(反转链表)

一道很基础的算法题,做一下思路的分享和代码的实现,也算是自己学习的一份笔记,如有不正,请大佬们指正。

class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}class Solution {public ListNode reverseList(ListNode head) {if(head!=null){           //防止空指针异常if(head.next!=null){  //防止空指针异常ListNode other = head.next;head.next = null;while(other!=null){ListNode latter = other;other = other.next;latter.next = head;head = latter;
//因为Java不像c/c++,没有指针,这里的latter容易给一些人错觉,
//觉得是节点b内部有节点a,而不是理论上的地址指向,其实从Java内存的管理机制
//来说,从根本上是栈内存的变量指向堆内存的实例}}}return head;}
}
/*main函数省略*/

思路:
1.先将头结点的next指向null,因为在新的链表中,它是尾结点;
2.将链表分解,先处理头节点a和下一个节点b,让节点b的next指向节点a,将再把处理完的节点b视为节点a;
3.重复操作2,直至没有下一个节点。
变量head代表节点a;
变量other代表整个链表中除去节点a剩下的部分;
变量latter代表节点b。

链表逆序(反转链表)相关推荐

  1. C++ Python 链表逆序 反转链表

    ** 以下为C++版本 ** 已知链表头节点指针head,将链表逆序.(不可申请额外空间) #include<stdio.h> struct ListNode {int val; //数据 ...

  2. python单向链表逆序_链表逆序-Python实现

    题目描述: 给定一个带头节点的单链表,将其逆序.即如果单链表原来为head->1->2->3->4->5->6->7,那么逆序后变为head->7-&g ...

  3. 链表逆序 java_链表逆序(JAVA实现)

    题目:将一个有链表头的单向单链表逆序 分析: 链表为空或只有一个元素直接返回: 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继: 重复步骤2,直到q为空: 调整链表头和链表尾: 图 ...

  4. python单链表逆序_python链表倒序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...

  5. C++实现链表逆序打印、链表反转

    //题目:C++实现链表逆序打印.链表反转 // 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. // 方法1:只 ...

  6. 【链表】C++链表反转、链表逆序打印

    转载地址:http://blog.csdn.net/yebanxin/article/details/51942598 题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面 ...

  7. 【链表】C++链表反转、链表逆序打印(三)

    题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. 方法1:只逆序打印,不改变 ...

  8. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  9. 2-6 链表逆序及其C++实现

    更多系列博文请点击:0-数据结构与算法链接目录 2-6 链表逆序 我只介绍两种常用方法吧,非递归方法 和 递归 方法 我觉得够用就行 1.非递归方法: 将第二个元素后面的元素依次插入到头结点后面, 最 ...

最新文章

  1. golang map 存储函数
  2. Qt运行一个实例进程
  3. python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
  4. .NETer,如何用.NET Core 3.0武装自己?这样学效率提高10倍!
  5. Spring Security(09)——Filter
  6. python和java的区别-三分钟看懂Python和Java的区别
  7. c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!
  8. T-SQL Apply的用法
  9. iOS 去掉UISearchBar输入框上面的黑线
  10. express日常开发总结
  11. win7下Visual Studio 2012 update4、AutoCAD 2016和二次开发插件ObjectARX2016环境安装及配置
  12. dll.dll病毒及解决办法
  13. VB全局热键(快捷键)
  14. 如何轻松清除Google搜索记录
  15. win7定时关机命令_如何让win7操作系统实现定时关机,以防我们忘记电脑关机
  16. linux内核溢出利用,窖藏15年新鲜出炉的Linux内核漏洞
  17. chrome 打开默认页 被篡改_chrome默认首页被修改如何解决_chrome首页被篡改的处理办法-系统城...
  18. 软件测试2年,想去培训性能测试自动化测试,28岁了,要不要培训?
  19. Android开发——应用宝推广渠道出现MD5值重复,请勿重复上传
  20. 一个账号可登录多个微信

热门文章

  1. 实现图片懒加载(及优化相关)
  2. 游戏编程入门(1):游戏专业概论
  3. 最常用的酒店IPTV系统实施方案
  4. 高考考日语学计算机,高中学日语对考大学有什么影响?很多专业限制日语生吗?...
  5. Win11系统声音怎么设置?Win11怎么调声音?
  6. Vcruntime140.dull.丢失解决方法
  7. ArcCatalog和ArcSDE
  8. Java代码韦伯分布_第十五节、韦伯局部描述符(WLD,附源码)
  9. 不管是大神还是新手,墙裂推荐7个实用C4D插件,成为C4D高效玩家
  10. x32计算机控制,Behringer干货|带你用电脑和ipad玩转X32