题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]

思路:一定要画图,修改指针,去交换两个结点。用图1中所示的三步,交换两个结点。第一步:prev->next=cur->next;第二步:cur->next=cur->next->next;第三步:prev->next->next=cur。交换之后,cur指向的仍然是原来的结点,但是位置已经发生变化,如图2所示,然后prev=cur,cur=cur->next,不断循环,直到链表中的两两相邻的结点全部交换完毕。

代码:

struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};class Solution {  //两两交换链表中的节点
public:ListNode* swapPairs(ListNode* head) {if (head == NULL)return head;ListNode* dummyHead = new ListNode(0);dummyHead->next = head;ListNode* prev = dummyHead;ListNode* cur = dummyHead->next;while (cur != NULL && cur->next != NULL) {prev->next = cur->next;cur->next = cur->next->next;prev->next->next = cur;prev = cur;cur = cur->next;}head = dummyHead->next;delete dummyHead;return head;}
};

两两交换链表中的结点相关推荐

  1. 两两交换链表中的结点-指针

    题意 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 样例 示例1输入:head = [1,2,3,4] 输出:[ ...

  2. Leetcode--24. 两两交换链表中的结点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 2-&g ...

  3. L24两两交换链表中的结点(链表)

    描述 1->2->3->4 两两交换 2->1->4->3 解题思路 class Solution {public:ListNode* swapPairs(List ...

  4. 24.两两交换链表中的结点

    class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy = new ListNode();dummy.next ...

  5. (补)20200328:两两交换链表中的节点(leetcode24)

    两两交换链表中的节点 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 我们以给的例子1→2→3→4说明,因为只需要两两交换,因此最后得到2→1→4→3. 我们把过程写一下:1→2→3→4 到 ...

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

    24. 两两交换链表中的节点 方法一:迭代,虚拟头结点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy ...

  7. Leetcode(24)——两两交换链表中的节点

    Leetcode(24)--两两交换链表中的节点 题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: ...

  8. LeetCode 24.两两交换链表中的节点 C语言

    题目 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3- ...

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

    1 题目描述 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 2 题目示例 示例 2: 输入 ...

最新文章

  1. 推荐个玩的:《罪案现场》你能走出来吗?
  2. CentOS 6.5的安装详解
  3. 经常使用的时间同步server地址
  4. Android Java 8使用Lamda报错:Execution failed for task :app:transformJackWithJackForDebug - Android?...
  5. c是面向什么的语言,c语言是什么语言
  6. 循环结构--while循环
  7. 后端理解ajax和axios
  8. 设计模式之工厂模式——应用最广泛的模式
  9. IsFinite (m_CachedRange.first) IsFinite (m_CachedRange.second) 的解决参考
  10. iPhone开发基础教程笔记(二)--第三章 处理基本交互
  11. redis 清理缓存
  12. 为什么说小米会是品牌2020年最重要的增长源?
  13. 请问你知道分布式系统设计模式的最低水位线思想么?
  14. Matlab广义追赶法(Thomas法)
  15. kinetis晶体谐振器到底要不要加电容和电阻
  16. 多级放大电路的频率响应(上限截止频率FH、下限截止频率FL)
  17. 一位新网络工程师的告白
  18. 车辆监控管理系统、GPS车辆监控系统、车辆监控管理系统技术方案 ,车辆监控管理系统设计,车载监控终端TBOX,车辆监控系统终端
  19. mysql connec_mysql++ Connect
  20. 現代政治思想의 發源

热门文章

  1. P1578 奶牛浴场
  2. 软件磁盘阵列 (Software RAID)
  3. 中式红木装修,传统与艺术的碰撞
  4. 国产给力啊啊啊----国产MCU-CW32F030开发学习
  5. Kotlin 协程的四种启动模式
  6. HTAP数据库:Hubble,企业实时营销的法宝
  7. python kazoo 踩坑记录
  8. JAVA 面试题 附答案
  9. 命令行查看公网IP地理位置 使用curl
  10. Solman系列 安装SAP Solution Manager 7.1 on Suse Linux 2