题目:输入一个链表,反转链表后,输出新链表的表头。牛客
思路:
其实代码的思路是通过每次只改变前一个指向,也就是pre指向head转为head指向pre。每次实现前,将原本的next保存,避免断掉,新的head赋值为原本的next,新的pre赋值为原来的head,next赋值为新head的下一个next。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null)//如果当前列表为空,则返回null
return null;
ListNode next;//next表示head后面一个节点
ListNode pre = null;//pre表示前一个节点
while(head != null) {
next = head.next;//避免链表断裂,储存一个节点
head.next = pre;//将head所指向的下一节点指向前一个,实现反转
//为了继续实现后面链表的反转,进行下面的操作
pre = head;
head = next;
}
return pre;
}
}