/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseBetween(head *ListNode, left int, right int) *ListNode {
resNode:=new(ListNode)
resNode.Next=head
pre:=resNode
// 查找到left前一个节点
for i:=0;i<left-1;i++{
pre = pre.Next
}
cur:=pre.Next
for i:=left; i< right;i++{
// 不断取出left后一个元素插入到pre后面,并left的next往后移一位
next := cur.Next
cur.Next = next.Next
next.Next = pre.Next
pre.Next = next
}
return resNode.Next
}