024 Swap Nodes in Pairs

来源:互联网 发布:鸟哥linux私房当当菜 编辑:程序博客网 时间:2024/04/28 02:47

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.


#include <iostream>#include <vector>#include <string>#include <cstdio>using namespace std;struct ListNode{int val;ListNode *next;ListNode(int x):val(x),next(NULL) {}};class Solution {public:ListNode* swapPairs(ListNode* head) {if(head == NULL) return head;ListNode *h = head;ListNode *pre = head;for(; head != NULL;) {ListNode *cur = head;ListNode *next = head->next;if(next != NULL) {next = next->next;if(pre == h) {pre = cur->next;cur->next->next = cur;cur->next = next;h = pre;} else {pre->next = cur->next;cur->next->next = cur;cur->next = next;}pre = cur;head = pre->next;} else {break;}}return h;}};




0 0
原创粉丝点击