一、题目详解
由于原题大家都在原网站上能看到,这里就不把题目原样复制粘贴下来了。主要意思就是给定一个链表,将其链表内节点两两交
换,最后返回交换后链表的头部。
二、思路详解
这道题可以用递归的方法将诶绝而且时间复杂度相对较小,我用的是循环读取链表节点,然后两两交换节点。实现起来比较麻烦
的地方就是节点之间交换操作,注意交换节点后指针重新指向新节点就行,其余并没有多少难度。
三、代码实现
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode **pp = &head, *a, *b;
while ((a = *pp) && (b = a->next)) {
a->next = b->next;
b->next = a;
*pp = b;
pp = &(a->next);
}
return head;
}
};