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

题目描述

给定一个链表,两两交换其中相邻的节点(结点进行交换而不是简单地进行值交换),并返回交换后的链表。

示例:
输入:1->2->3->4
输出:2->1->4->3

解析

实现技巧:递归实现
实现方法

如果利用调整指针的方式完成链表的交换会产生大量的指针交换操作,难度较大。
这里介绍递归实现:

  • 链表每次交换前两个结点
  • 后面n-2个结点作为新的链表递归实现
  • n-2结点的结果放到前两个结点的链表后面
递归实现代码
public ListNode swapPairs(ListNode head) {
    if(head == null || head.next == null){//递归判断条件,如果无结点或者只有一个结点直接返回
        return head;
    }
    /*取出前两个结点*/
    ListNode first = head;
    ListNode second = head.next;
    /*head指向新的链表*/
    head = second.next;
    /*前两个结点交换位置*/
    second.next = first;
    /*head链表的结果链接到前两个结点链表后面*/
    first.next = swapPairs(head);
    /*返回结果*/
    return second;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,038评论 0 13
  • 1)这本书为什么值得看: Python语言描述,如果学的Python用这本书学数据结构更合适 2016年出版,内容...
    孙怀阔阅读 12,648评论 0 15
  • (一)LeetCode206.反转链表 题目描述: 反转一个单链表。 代码实现 (二)LeetCode160. 相...
    Jarily阅读 1,424评论 0 5
  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 3,542评论 4 74
  • 1 大学一二年级体育是必修课,但课程是可自选的。但此时,全校同学都在选,一定要下手快,否则就会像Z同学那样悲催。 ...
    岳柠檬阅读 871评论 0 2