这题感觉没什么怎么就medium了。
- 临时加上一个空的头结点,方便循环处理。
ListNode m=new ListNode(-1);
m.next=head;
head=m;
-
m是要交换的两个节点的前驱
p是要交换的第一个,q是要交换的第二个 -
处理奇数情况,如果p是最后一个节点,则q是null,这样就不用交换 ,直接break跳出循环
if(q==null)break;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if(head==null)return null;
ListNode m=new ListNode(-1);
m.next=head;
head=m;
ListNode p=m.next;
ListNode q=p.next;
while(p!=null){
q=p.next;
if(q==null)break;
m.next=q;
p.next=q.next;
q.next=p;
m=p;
p=p.next;
}
return head.next;
}
}