给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode pre =new ListNode(0);
pre.next =head;
ListNode temp=pre;
while(temp.next!=null&&temp.next.next!=null)
{
ListNode start=temp.next;
ListNode end=temp.next.next;
temp.next=end;
start.next=end.next;
end.next=start;
temp=temp.next.next;
}
return pre.next;
}
}
1.构建一个新的节点指向头节点,使得在交换后也能把head返回。
2.构建中间节点temp,使用这个节点牵线来完成交换。
3. temp=temp.next.next;注意是跳两格,不是跳一格。
4. return pre.next;这里不是return head,注意了,head已经换了,这个头节点的设置非常的巧妙。