方法1:头插法,另请高明
class Solution {
public ListNode reverseList(ListNode head) {
// 假头部
ListNode fakeHead = new ListNode(-1000);
// 不跟原来head了
ListNode cur = head;
while (cur != null) {
ListNode temp = cur.next;
cur.next = fakeHead.next;
fakeHead.next = cur;
cur = temp;
}
return fakeHead.next;
}
}
方法2:直接动手
class Solution {
public ListNode reverseList(ListNode head) {
// 尾部肯定是空
ListNode prev = null;
ListNode cur = head;
// 直接修改指针方向
while (cur != null) {
ListNode temp = cur.next;
cur.next = prev;
prev = cur;
cur = temp;
}
return prev;
}
}