1. 图解
2. 代码
public static ListNode reverseList(ListNode head) {
if (head == null || head.next == null)
return head;
// 初始化双指针
ListNode cur = null, pre = head;
ListNode temp;// 中间变量,用来存储 pre.next() 不然会丢失
while (pre != null) {
temp = pre.next; // 存储 pre的下一个节点(不然反转后会丢失)
pre.next = cur; // 反转
cur = pre; // cur针后移
pre = temp;// 操作指针后移
}
return cur;
}