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

    package com.example.demo.leecode;

    /**
    * 两两交换链表中的节点
    * @Date 2020/12/16
    * @author Tang
    *
    * 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
    * 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
    */
    public class SwapNodesInPairs {


    public ListNode execute(ListNode head){

    //创建一个首节点 value为null
    ListNode first = new ListNode();
    first.next = head;
    doSwap(first);

    return first.next;
    }

    private void doSwap(ListNode left){
    ListNode right = left.next;
    if(right == null || right.next == null){
    return;
    }
    left.next = right.next;

    right.next = left.next.next;
    left.next.next = right;
    doSwap(right);
    }

    public static void main(String[] args) {

    ListNode l1 = new ListNode(1);
    ListNode l2 = new ListNode(2);
    ListNode l3 = new ListNode(3);
    ListNode l4 = new ListNode(4);
    ListNode l7 = new ListNode(5);
    ListNode l8 = new ListNode(6);

    l1.next = l2; l2.next = l3; l3.next = l4;
    l4.next = l7; l7.next = l8;
    ListNode execute = new SwapNodesInPairs().execute(l1);

    System.out.println(execute.val);
    while(execute.hasNext()){
    execute = execute.next;
    System.out.println(execute.val);

    }


    }

    }
    class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) {
    this.val = val;
    }
    ListNode(int val, ListNode next) {
    this.val = val;
    this.next = next;
    }
    boolean hasNext(){
    return next != null;
    }

    }
  • 相关阅读:
    03_02_leetcode_11_盛最多的水
    03_01_跳跃表
    初学Java算法编程_Array List自己和官方文档的区别
    编译原理习题解析-第1章
    VS2019配置C+++mingW32配置
    自创理解绝对定位和相对定位的方法
    Solution -「洛谷 P7395」「CoE-I 2021C」弹珠游戏
    Solution Set -「ARC 113」
    Solution Set -「ABC 192」
    Solution Set -「CF 1486」
  • 原文地址:https://www.cnblogs.com/ttaall/p/14142914.html
Copyright © 2011-2022 走看看