文章目录
更多LeetCode题解
My Solution
由于尝试交换未成功,所以使用了一种讨巧的方法:新建一个List,向这个List内添加结点。
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if (!head || !head->next) {
return head;
}
ListNode* p = head;
ListNode* q = head->next;
ListNode resHead(0);
ListNode* pres = &resHead;
while(true)
{
ListNode* pl1 = new ListNode(ListNode(q->val));
ListNode* pl2 = new ListNode(ListNode(p->val));
pres->next = pl1;
pres->next->next = pl2;
pres = pres->next->next;
if (!q->next) {
break;
}
else if (q->next && !q->next->next) {
ListNode* pl3 = new ListNode(ListNode(q->next->val));
pres->next = pl3;
break;
}
else {
p = q->next;
q = p->next;
}
}
return resHead.next;
}
};