LeetCode Swap Nodes in Pairs
class Solution { public: ListNode *swapPairs(ListNode *head) { ListNode *a = NULL; ListNode *b = NULL; ListNode *tail = NULL; ListNode *nhead = NULL; a = head; while (a != NULL && (b = a->next) != NULL) { a->next = b->next; b->next = a; if (tail != NULL) { tail->next = b; } else { nhead = b; } tail = a; a = a->next; } if (nhead == NULL) { nhead = head; } return nhead; } };
准备六级,水一发
第二轮:
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.
class Solution { public: ListNode *swapPairs(ListNode *head) { if (head == NULL || head->next == NULL) { return head; } ListNode holder(0); ListNode* prev = &holder; ListNode* cur = head; while (cur != NULL) { ListNode* next = cur->next; if (next == NULL) { break; } head = next->next; next->next = cur; cur->next = head; prev->next = next; prev = cur; cur = cur->next; } return holder.next; } };