栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

力扣题目链接

本题采用两个节点两个节点处理的方式,若仅剩一个节点则不用处理,具体代码以及详细注释如下:

class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode cur = head;//当前所在位置
        if(head == null) return head;
        else if(head.next == null) return head;//若链表为空或只有一个节点则直接返回头节点
        else if(head.next != null) head = head.next;//若多于两个节点则将头节点改为第二个节点
        ListNode pre = null;//保存已经处理过的节点的尾节点,用于恢复与后面节点的链接
        ListNode temp = null;//保存cur后的第二个节点

        while(cur != null){
            if(cur.next != null){//有两个待反转的节点
                temp = cur.next.next;//保存cur后的第二个节点
                cur.next.next = cur;//将当前节点后的第一个节点的next指向当前节点
                if(pre != null){
                    pre.next = cur.next;//与前边处理过后的链表相连
                }
                cur.next = temp;//实现反转
                pre = cur;//一次反转完成,修改pre指向节点位置
                cur = temp;//修改cur指向节点位置
            }
            else{
                cur = cur.next;//仅剩一个节点,不用反转,退出循环
            }  
        }
        return head;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号