LeetCode题解-24. 两两交换链表中的节点(链表 递归)
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 :
1 | 给定 1->2->3->4, 你应该返回 2->1->4->3. |
分析
采用递归的思想,先交换前两个节点,再交换接着的两个节点,依次类推,交换完成后将所有的两两部分连接在一起。
编程的思路交换前两个节点,连接上后面已经交换好的所有部分,后面的部分如何实现交换依然使用同样的方式,也就是通过递归调用来实现。
定义一个节点指针p指向第2个节点,然后将第1个节点的next指向第2节点之后的部分(递归已交换完成的部分),最后将p的next指向原来的第1个节点。注意第2步与第3步的顺序不要反了。
1 | __ p |
C++实现
1 | /** |
运行结果
输入
1 | [1,2,3,4] |
输出
1 | [2,1,4,3] |
-------------纸短情长 下次再见-------------
关注微信公众号,获取更多精彩~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 码农爱学习的博客!
评论