力扣 | 24. 两两交换链表中的节点

两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

输入:head = 1->2->3->4->5->NULL

输出:2->1->4->3->5->NULL

java 复制代码
 public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) return head; //确保了以下代码至少是两个节点

        ListNode dummyNode = new ListNode(-1);
        dummyNode.next = head;

        ListNode prev = dummyNode;
        ListNode first = head;
        ListNode second = head.next;
        while (second != null) {//确保两个节交换点中只有first这一个节点就不交换
            ListNode next = second.next;
            prev.next = second;
            second.next = first;//second是两个需要交换节点的最后面的那个节点
            first.next = next;

            prev = first;//prev总是总是两个
            first = next;
            if (first == null) break;
            second = first.next;
        }
        return dummyNode.next;
    }
相关推荐
yadanuof8 分钟前
leetcode hot100 图论
leetcode·深度优先·图论
---yx89897833 分钟前
数字人系统源码---v10技术五大底层架构链路全局开发思路
算法·架构·数字人·数字人源码·数字人系统
xiao--xin40 分钟前
LeetCode100之二叉搜索树中第K小的元素(230)--Java
java·算法·leetcode·二叉树·树的统一迭代法
路飞雪吖~42 分钟前
数据结构 && 常见的排序算法
数据结构·算法·排序算法
手握风云-1 小时前
Java数据结构第二十一期:解构排序算法的艺术与科学(三)
数据结构·算法·排序算法
爱吃柠檬呀1 小时前
《C陷阱与缺陷》读书笔记(一)
c语言·开发语言·算法·《c陷阱与缺陷》·编写程序
壮志凌云1 小时前
配对样本t检验
算法
wxr的理想之路2 小时前
list链表的使用
c语言·数据结构·链表·list
fqsword2 小时前
C++ 算法竞赛STL以及常见模板
c++·算法
曦月逸霜2 小时前
第五次CCF-CSP认证(含C++源码)
数据结构·c++·算法·ccf-csp