package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
func reverseKGroup( head *ListNode , k int ) *ListNode {
groupNum := k
dummy := &ListNode{Val: 0}
pre := dummy
end := dummy
dummy.Next = head
for end != nil {
for i := 0; i < groupNum && end != nil; i++ {
end = end.Next
}
if end == nil {
break
}
start := pre.Next
next := end.Next
end.Next = nil
pre.Next = reversion(start)
start.Next = next
pre = start
end = pre
}
return dummy.Next
}
func reversion(start *ListNode) *ListNode {
//开始颠倒链表
var res *ListNode
for start != nil {
next := start.Next
start.Next = res
res = start
start = next
}
return res
}