反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode pre = null, cur = head;
while (cur != null) {
//保存当前节点的下一个节点的位置
ListNode tmp = cur.next;
//把当前节点的下一个节点指向当前节点的前一个节点
cur.next = pre;
//当前节点的前一个节点后移一位
pre = cur;
//当前节点后移一位
cur = tmp;
}
return pre;
}
}