java中单链表倒转的实现方法
来源:互联网 发布:linux mtd源代码分析 编辑:程序博客网 时间:2024/05/22 15:42
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 header = new ListNode(0); header.next = head; ListNode cur = header.next; while(cur != null && cur.next != null){ ListNode n = cur.next; //(1) cur.next = n.next; //(2) n.next = header.next; //(3) header.next = n; //(4) } return header.next; }}
主要的操作是在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 推出循环
以上,实现单链表的倒转。
0 0
- java中单链表倒转的实现方法
- java实现栈stack+语句倒转
- 实现字符倒转的python函数
- 倒转
- 算法:将英文句子单词倒转实现(新方式)-Java
- (无脑的博客)c语言将数字倒转的方法~~
- 倒转字符串,但不倒转里面的词
- 知识点13:手写代码-倒转链表的c语言实现
- JAVA设计模式-依赖倒转原则
- java设计模式_依赖倒转原则
- java本地方法的实现
- DES的JAVA实现方法
- base64的java实现方法
- base64的java实现方法
- java多线程的实现方法
- java多线程的实现方法
- Java实现多线程的方法
- Java实现多线程的方法
- Volley网络请求框架简析——Android网络请求框架(三)
- 13款Linux运维比较实用的工具
- copy 的实现
- hdu 4901
- Object-C基础之初始化方法(init)
- java中单链表倒转的实现方法
- 通过Intent查看并获取联系人电话
- 产品经理系列视频教程价值1498
- Node.js 4.4.x 更新日志的重要内容回顾
- 产品经理系列视频教程价值1498
- Ant之项目应用
- 产品经理系列视频教程价值1498
- HDU 4901 DP
- KeepAlived+MySQL互为主从