24. Swap Nodes in Pairs
分析
-
创建虚拟头节点
- 为了方便处理头节点的交换,创建一个虚拟头节点
dummy,使其next指向链表的头节点
- 为了方便处理头节点的交换,创建一个虚拟头节点
-
遍历链表并交换节点
- 使用指针
cur指向当前正在处理的一对节点的前驱节点。 - 检查当前节点
cur->next和cur->next->next是否存在,只有在有足够节点时才进行交换 - 定义两个指针
p和q分别指向待交换的两个节点:- 交换后,
cur->next指向第二个节点q - 第一个节点
p->next指向第三个节点 - 第二个节点
q->next指向第一个节点
- 交换后,
- 将指针
cur移动到已交换节点对的末尾,继续处理下一对
- 使用指针
时间复杂度
时间复杂度 O(n),遍历链表一次,其中 n 是链表的长度
空间复杂度
空间复杂度 O(1)
C++代码
|
|