検索
ホームページJava&#&はじめるJavaでマルチウェイリンクリストをコピーする方法

Javaでマルチウェイリンクリストをコピーする方法

多方向リンク リスト構造 (例:

(ビデオ チュートリアルの推奨: java コース)

public class Node{
    public int value;
    public Node next;
    public Node rand;
    public Node(int data){
        this.value = data;
       }
}

方法 1: HashMap 構造を使用します

public class CopyFromMultiNode {
    public static void main(String[] args){
        int[] array = {12,3,4,5,6,77,6,54,56,6,7,87,15,15,15};
        //数组转Node
        Node head = array2node(array);
        Node help = head;
        System.out.print("处理前     ");
        while(help != null){
            System.out.print(help.value + " ");
            help = help.next;
        }
 
        //使用HashMap结构
        Node res = copyFromRand1(head);
        System.out.println();
        System.out.print("处理后结果:");
        while(res != null){
            System.out.print(res.value+" ");
            res = res.next;
        }
    }
 
    //使用HashMap结构
    public static Node copyFromRand1(Node head){
        Node cur = head;
        HashMap<Node, Node> map = new HashMap<>();
        while(cur != null){
            map.put(cur, new Node(cur.value));
            cur = cur.next;
        }
        cur = head;
        while(cur != null){
            map.get(cur).next = map.get(cur.next);
            map.get(cur).rand = map.get(cur.rand);
            cur = cur.next;
        }
        return map.get(head);
    }
 
    //数组转Node功能,供测试使用
    public static Node array2node(int[] array){
        Node head = new Node(array[0]);
        Node cur = head;
        for(int i=1; i<array.length; i++){
            cur.next = new Node(array[i]);
            cur = cur.next;
        }
        return head;
    }
 
    //基础node节点结构
    public static class Node{
        public int value;
        public Node next;
        public Node rand;
        public Node(int data){
            this.value = data;
        }
    }
}

2. 他の構造を使用せずにいくつかの有効な変数メソッドを使用します

    //使用几个有效变量方法
    //替换方法一的copyFromRand1方法
    public static Node copyFromRand2(Node head){
        Node next = null;
        Node cur = head;
        //1 -> 2 -> 3 -> 4 ==> 1 -> 1` -> 2 -> 2` -> 3 -> 3` -> 4 -> 4
        //完成链表拼接
        while(cur != null){
            next = cur.next;
            cur.next = new Node(cur.value);
            cur.next.next = next;
            cur = next;
        }
        cur = head;
        Node curCopy = null;
        //添加Node的rand值
        while(cur != null){
            next = cur.next.next;
             curCopy = cur.next.next;
             curCopy = cur.rand != null? cur.rand.next: null;
            cur = next;
        }
        Node res = head.next;
        cur = head;
        //拆分
        //  1 -> 1` -> 2 -> 2` -> 3 -> 3` -> 4 -> 4
        //   ==>  1 -> 2 -> 3 -> 4  和 1`-> 2`-> 3`-> 4`
        while(cur != null){
            next = cur.next.next;
            curCopy = cur.next;
            cur.next = next;
            curCopy.next = next != null ? next.next:null;
            cur = next;
        }
        return res;
    }

推奨される関連チュートリアル: Java 入門

以上がJavaでマルチウェイリンクリストをコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。