leetcode:
https://leetcode.com/problems/reverse-linked-list/
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @return {ListNode} */ var reverseList = function(head) { var prev = null, cur = head, next; while (cur !== null) { next = cur.next; head = cur; cur.next = prev; prev = cur; cur = next; } return head; };https://leetcode.com/problems/reverse-linked-list-ii/description/
Reverse a linked list from position m to n. Do it in one-pass.
Note: 1 ≤ m ≤ n ≤ length of list.
Example:
Input: 1->2->3->4->5->NULL, m = 2, n = 4 Output: 1->4->3->2->5->NULL
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @param {number} m * @param {number} n * @return {ListNode} */ var reverseBetween = function(head, m, n) { if(head === null) return head; if(m===n) return head; var dummy = new ListNode(0), h = dummy; dummy.next = head; for (var i = 0; i < m-1; i++) { h = h.next; } var cur = h.next, last = cur.next; for (i = 0; i < n - m; i++) { cur.next = last.next; last.next = h.next; h.next = last; last = cur.next; } return dummy.next; };