ホームページ  >  記事  >  Java  >  リンクされたリストを最後から最初まで印刷する Java 実装の分析例

リンクされたリストを最後から最初まで印刷する Java 実装の分析例

黄舟
黄舟オリジナル
2017-10-16 09:51:591318ブラウズ

この記事では、リンク リストのコード例を端から端まで印刷するための Java プログラミングを主に紹介します。編集者はそれが非常に優れていると考えたので、必要な友人の参考のためにここで共有します。

問題の説明: リンクされたリストの先頭ノードを入力し、末尾から先頭までの各ノードの値を出力します。

最初にリンクリストのノードを定義します


public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val){
      this.val = val;
    }
  }

アイデア1: この質問は明らかにスタックのアイデアを使用しており、後入れ先出し、最初にリンクリストを走査し、ノード値をプッシュしますスタックに入れます。最後に、スタックを走査した後、スタックをポップします。


public static Stack<Integer> printListReverse_Stack(ListNode listNode){
    Stack<Integer> stack = new Stack<Integer>();
    if(listNode != null){
      ListNode p = listNode;
      while(p != null){
        stack.add(p.val);
        p = p.next;
      }
    }
    return stack;
  }

アイデア2: リンクされたリストを直接走査し、ヘッド挿入メソッドに従ってArrayListに1つずつ挿入します


public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    int add = 0;
    ListNode p = listNode;
    while(p != null){
      print.add(0, p.val);
      p = p.next;
    }
    return print;
  }

アイデア3: 再帰のアイデアを使用できます(本質的にはスタックの考え方でもあります)


public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    print.addAll(printListReversely_Recursively(listNode.next));
    print.add(listNode.val);
    return print;
  }

まとめ

以上がリンクされたリストを最後から最初まで印刷する Java 実装の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。