LeetCode Algorithm 24. 两两交换链表中的节点

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 24. 两两交换链表中的节点相关的知识,希望对你有一定的参考价值。

题目链接:24. 两两交换链表中的节点

Ideas

算法:迭代
数据结构:链表
思路:其实有点类似于链表翻转,只不过每次翻转是两两翻转的。

  1. 首先创建一个虚拟头节点
  2. 以虚拟头节点、虚拟头节点的下一个节点、虚拟头节点的下下个节点分别定义为cur、first、second,进行指针操作两两交换
  3. cur继续往前走,一次走两步

Code

C++

class Solution 
public:
    ListNode* swapPairs(ListNode* head) 
		ListNode *dummyHead = new ListNode(0);
		dummyHead->next = head;
		ListNode *cur = dummyHead;
		while (cur->next != nullptr && cur->next->next != nullptr) 
			ListNode *first = cur->next, *second = cur->next->next;
			cur->next = second;
			first->next = second->next;
			second->next = first;
			cur = first;
		
		return dummyHead->next;
    
;

以上是关于LeetCode Algorithm 24. 两两交换链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 24. 两两交换链表中的节点

LeetCode ——24. 两两交换链表中的节点

leetcode 24 两两交换链表中的节点

[leetcode] 24. 两两交换链表中的节点

LeetCode 24 两两交换链表中的节点

leetcode24-两两交换链表图解