funcswapPairs(head *ListNode)*ListNode {
pre := ListNode{Val:-1, Next: head}
temp :=&pre
for temp.Next !=nil&& temp.Next.Next !=nil{
start := temp.Next
end := temp.Next.Next
temp.Next = end
start.Next = end.Next
end.Next = start
temp = start
}return pre.Next
}
连续K个节点做逆序
funcreverseKGroup(head *ListNode, k int)*ListNode {
temp := head
for i:=1;i<k&&temp !=nil;i++{
temp=temp.Next
}if temp==nil{return head
}
tempNext := temp.Next
temp.Next=nil
nextNode :=reverse(head)
subTemp :=reverseKGroup(tempNext,k)
head.Next=subTemp
return nextNode
}
链表逆序
func reverse (head *ListNode)*ListNode{var next *ListNode
var pre *ListNode
for head!=nil{
next = head.Next
head.Next=pre
pre=head
head=next
}return pre
}
删除倒数第N个节点
funcremoveNthFromEnd(head *ListNode, n int)*ListNode {
num := n
quick := head
var last *ListNode
last =&ListNode{}
last.Next = head
slow := last
for quick!=nil{
quick = quick.Next
if num<=0{
slow=slow.Next
}
num--}
slow.Next=slow.Next.Next
return last.Next
}