题目描述
给一个链表,交换相邻节点, 如 1 -> 2 -> 3 -> 4 => 2 -> 1 -> 4 -> 3,
且不能改变节点中的键值。
题目分析
对于一个偶节点,若它有两个后继节点,则交换这两个后继节点,
然后进入下一个偶节点。
代码
#include <iostream>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode root(0);
root.next = head;
ListNode* ptr = &root;
while (ptr->next != NULL && (ptr->next)->next != NULL) {
ListNode* tmp = (ptr->next)->next;
(ptr->next)->next = tmp->next;
tmp->next = ptr->next;
ptr->next = tmp;
ptr = (ptr->next)->next;
}
return root.next;
}
};
总结
1次AC
近期评论