和反转链表Ⅰ相比多了有范围的链表前后反转
首先确定left的边界,让pre往后走
每一个next,就是下一个要被换到前面的结点
//和反转链表Ⅰ相比多了有范围的链表前后反转
//首先确定left的边界,让pre往后走
ListNode dummyhead = new ListNode(0,head);
//定义一个pre让他先到左节点的前一个呆着
ListNode pre = dummyhead;
for(int i = 0; i < left - 1; i++) {
pre = pre.next;
}
//等pre到地方后,cur再走
ListNode cur = pre.next;//此时cur是范围内的第一个数;
//next进循环再动
ListNode next;
//将leaft和right的范围在for循环中,后边的事儿就不用管了
for (int i = 0; i < right - left;i++ ) {
//0.next一直是cur下一个
next = cur.next;
//1.当前的cur连到下下一个结点
cur.next = next.next;
//2.下一个next连的是边界开始的第一个结点,也就是pre.next
next.next = pre.next;
//3.边界的pre的下一个就是next,
//意味着每一个next,就是下一个要被换到前面的结点
pre.next = next;
}
return dummyhead.next;