描述:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
翻译:将单链表相邻两个节点交换位置(不是交换值)
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func swapPairs(head *ListNode) *ListNode { if head==nil||head.Next==nil{ return head } r:=&ListNode{} res:=r r.Next=head p:=head q:=p.Next for q!=nil{ p.Next=q.Next r.Next=q q.Next=p r=p if r==nil||r.Next==nil||r.Next.Next==nil{ break } p=r.Next q=p.Next } return res.Next }