反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解题思路
采用迭代的方式,三个辅助变量
pre
代表原顺序的前一个节点
cur
代表当前节点
next
代表原顺序的下一个节点
于是当cur != null
时循环操作
- 记录当前节点原顺序下的
next
节点为next
- 当前节点的
next
指向pre
,此时断开连接破坏原顺序 - 然后迭代
pre = cur
,cur = next
,使各个指针在原顺序下往后移动
代码
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
}