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;
    }

    }
  • 相关阅读:
    23种设计模式彩图
    Win10间歇性卡顿
    RDMA
    mii-tool与ethtool的用法详解
    linux下模拟CPU占用100%小程序
    Linux SNMP 监控一些常用OID
    SNMP协议介绍
    set排序(个人模版)
    TSP(个人模版)
    树的重心(个人模版)
  • 原文地址:https://www.cnblogs.com/ttaall/p/14142914.html
Copyright © 2011-2022 走看看