zoukankan      html  css  js  c++  java
  • 24. 两两交换链表中的节点

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

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

    示例:

    给定 1->2->3->4, 你应该返回 2->1->4->3.
    public class SwapNodesinPairs {
        public ListNode swapNodesinPairs(ListNode head) {
            ListNode result = new ListNode(0);
            result.next = head;
            ListNode cur = result; //链表头结点发生改变,所以result中next需要改变
            while(cur.next != null && cur.next.next != null) {
                ListNode temp = cur.next;  //第一节点
                ListNode second = temp.next;  //第二结点
                ListNode third = second.next;  //第三结点
                temp.next = third;  //第一结点指向第三
                second.next = temp; //第二结点指向第一
                cur.next = second;  //第二结点作为新的第一节点,一次交换完成
                cur = temp;            
            }
            return result.next;
        }
    }
    
    class ListNode {
        int val;   
        ListNode next;
        ListNode(int x) { val = x; }
    }
    无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
  • 相关阅读:
    JSP使用JDBC ODBC 实例
    Gradle templates 的使用
    Java 中使用Jackson反序列化
    Java getResourceAsStream返回为空的问题
    MVC 学习随笔(一)
    分区信息查看
    关于线程 wait notify sleep
    synchronized与Lock
    java类初始化
    oracle sql 执行原理
  • 原文地址:https://www.cnblogs.com/xiyangchen/p/10945988.html
Copyright © 2011-2022 走看看