输入一个链表,反转链表后,输出新链表的表头
因为这道题花了自己的一些时间,所以还是想写一篇博客纪念一下。
代码如下
package dai.List;
/**
* 输入一个链表,反转链表后,输出新链表的表头。
* @author 18491
*
*/
public class ReverseList02 {
public ListNode02 reverseList(ListNode02 head) {
if(head == null) {
return null;
}
//最终需要实现的是 将列表1 -> 2 -> 3 -> 4 转换为1 <- 2 <-3 <- 4
//为了能够快速反转列表,需要定义节点tem来保存当前节点的next值,定义pre来保存节点的上一个值
ListNode02 tem = null;
ListNode02 pre = null;
while(head != null) {
//保存当前节点的下一个节点,防止出现断列
tem = head.next;
//保存好之后,则将当前节点指向pre
//例如,当前是第一次循环,则1 -> 2 转变为 null <- 1;方向发生改变,代码实现如下
head.next = pre;
//记住当前每个节点的状态,我们将节点都向后移一步
pre = head;
head = tem;
}
return pre;
}
}
class ListNode02 {
int val;
ListNode02 next;
public ListNode02(int val){
this.val = val;
}
}