/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
 *
 * @param head ListNode类
 * @param m int整型
 * @param n int整型
 * @return ListNode类
 */
function reverseBetween(head, m, n) {
    // write code here
    //m等于n 不需要翻转
    if (m === n) {
        return head;
    }
    //链表为空或链表长度为1不需要翻转
    if (head == null || head.next == null) {
        return head;
    }
    //定义一个新表头指向head  头插法!
    // let newHead = new ListNode(-1);
    let newHead = new ListNode(-1)
    newHead.next = head
    let pre = newHead;
    for(i=1;i<m;i++){
       pre = pre.next
    }
    let p1 = pre.next
    let p2
    for(i=m;i<n;i++){
        p2 = p1.next
        p1.next = p2.next
        p2.next = pre.next
        pre.next = p2
    }
    return newHead.next
    //先遍历找到m的位置,
    
}
module.exports = {
    reverseBetween: reverseBetween,
};