题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
思路
1.递归
2.建立虚拟头结点(为了不对head进行特殊处理),类似两数相加
实现
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode* res = new ListNode(0);
res->next = head;
ListNode* post;
ListNode* pre = res;
while (head !=NULL && head->next != NULL) {
post = head->next;
head->next = post->next;
post->next = head;
pre->next = post;
pre = head;
head = head->next;
}
return res->next;
}
};
博客围绕LeetCode题目展开,要求给定链表两两交换相邻节点并返回交换后的链表,且不能仅改变节点内部值,需实际交换节点。给出递归和建立虚拟头结点两种思路,后者类似两数相加,可避免对head进行特殊处理。
676

被折叠的 条评论
为什么被折叠?



