この記事では、リンク リストのコード例を端から端まで印刷するための 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 サイトの他の関連記事を参照してください。