反转链表的核心思想就是三个指针
第一个指针:记录当前的位置
第二个指针:记录前一个位置
第三个指针:记录下一个位置
/**
* 翻转链表
* 2022年10月27日09:29:06
* 示例:
* 输入: 1->2->3->4->5->NULL
* 输出: 5->4->3->2->1->NULL
*/
public class Test03 {
public static ListNode reverseList(ListNode head){
if(head == null){
return null;
}
// 当前指针
ListNode cur = head;
// 前一个指针节点
ListNode pre = null;
// 先保存当前节点的下一个节点
ListNode temp = cur.next;
while(cur != null){
// 当前的指针指向前一个
cur.next = pre;
// 然后前一个指针变成当前指针的位置
pre = cur;
// 当前指针来到了下一个
cur = temp;
}
// 因为当前节点为null,就停止了 前面的节点才是头节点了。
return pre;
}
}
//单向链表节点
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}