package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
func reverseBetween( head *ListNode , m int , n int ) *ListNode {
// write code here
start, end := m, n
current := head
var tmpRes, endNode1 *ListNode
for index := 1; index <= end; index++ {
if index < start {
if index+1 == start {
endNode1 = current
}
current = current.Next
continue
}
tmp := current.Next
current.Next = tmpRes
tmpRes = current
current = tmp
}
if endNode1 != nil {
endNode1.Next = tmpRes
} else {
head = tmpRes
}
//找到尾部
if current != nil {
tmp := tmpRes
for tmp != nil && tmp.Next != nil {
tmp = tmp.Next
}
tmp.Next = current
}
return head
}