java实现单链表倒转的方法
java中有关单链表反转的方法有很多种,这里记录一种并附上详细步骤:
代码如下
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode reverseList(ListNode head) { ListNode pre; ListNode temp; pre = head; // 前驱节点 ListNode cur = head.next //当前节点 while(cur != null && cur.next != null){ temp = cur.next; //(1) cur.next = pre; //(2) pre = cur; //(3) cur = temp; //(4) } head.next = null //原头节点,反转后尾节点 return pre; //原尾节点 反转后头节点 } }
主要的操作是在while循环中,下面画图解释一下是如何实现单链表倒转的:
首先java中没有指针的概念,但是可以看到ListNode中的next属性其实就代表指向下一个节点的“指针”,因此可以这样来理解:
1、原单链表:
假设单链表有三个元素[1,2,3],0为上述的头对象
2、执行(1)、(2)后:
cur.next指向了n.next:
3、执行(3):
4、执行(4):
第一次循环结束,第一次循环后的单链表如上图所示。
cur != null && cur.next != null,因此执行第二次循环:
5、第二次执行(1),(2):
6、第二次执行(3):
7、第二次执行(4):
cur.next == null 推出循环
以上,实现单链表的倒转。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
谈谈Java利用原始HttpURLConnection发送POST数据
这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧2015-10-10SpringCloud Eureka服务的基本配置和操作方法
Eureka是Netflix开源的一个基于REST的服务治理框架,主要用于实现微服务架构中的服务注册与发现,Eureka是Netflix开源的服务发现框架,用于在分布式系统中实现服务的自动注册与发现,本文介绍SpringCloud Eureka服务的基本配置和操作方法,感兴趣的朋友一起看看吧2023-12-12设置Myeclipse中的代码格式化、注释模板及保存时自动格式化
这篇文章主要介绍了设置Myeclipse中的代码格式化、注释模板及保存时自动格式化方法,需要的朋友可以参考下2014-10-10Springboot使用@Cacheable注解实现数据缓存
本文介绍如何在Springboot中通过@Cacheable注解实现数据缓存,在每次调用添加了@Cacheable注解的方法时,Spring 会检查指定参数的指定目标方法是否已经被调用过,文中有详细的代码示例,需要的朋友可以参考下2023-10-10
最新评论