赞
踩
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(!head || !head->next)
return head;
ListNode *hn = head->next;
head->next = swapPairs(head->next->next);
hn->next = head;
return hn;
}
};
class Solution { public: ListNode* swapPairs(ListNode* head) { if(!head || !head->next) return head; ListNode *hn = head->next, *hnn = head->next->next; ListNode *newHead = hn, *prev = NULL; while(head && hn) { if(prev) prev->next = hn; hnn = hn->next; hn->next = head; head->next = hnn; prev = head; head = head->next; if(head) hn = head->next; else hn = NULL; } return newHead; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。