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

本文介绍了一种链表节点两两交换的算法实现。通过循环遍历链表,并使用指针调整节点间的连接方式来完成节点交换。该方法适用于需要调整链表顺序的场景。
8358

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



