简单的链表逆置操作。需要注意节点数为奇数的情况
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
int now = 0;
ListNode *p = new ListNode(0), *result = p;
p->next = head;
while (p->next != NULL) {
if (now == 0) {
if (p->next->next == NULL) break;
ListNode* tmp = p->next;
p->next = tmp->next;
tmp->next = p->next->next;
p->next->next = tmp;
}
now = now ^ 1;
p = p->next;
}
return result->next;
}
};