[剣指offer][Java]テールからチェーンテーブルを印刷

1397 ワード

タイトル
チェーンテーブルを入力し、チェーンテーブルの値が末尾から順にArrayListを返します.
プログラムコア思想
  • は「尾から頭まで」からスタックを連想するので、この問題はjavaに持参したスタックで「尾から頭まで」の要求を解決します.すべてのノード値をスタックに入れ、ノード値をスタックから出てArrayListに入り、最後にArrayListに戻ればよい.
  • が残っているのはチェーンテーブルが遍歴している問題です.newは、チェーンテーブルヘッダを指し、その後、後続のノードを順次指し、チェーンテーブルの最後まで遍歴することができる(newのノードが指すノードのnextはnull).
  • Tips
  • スタックの使用作成:Stack stack=new Stack()スタック:stack.push(括弧にスタックを埋め込むもの、タイプは作成時の汎用タイプ)出スタック:stack.pop(); スタックが空かどうかを判断する:stack.empty();
  • ArrayListの使用作成:ArrayList array=new ArrayList()要素を追加:array.add(カッコに追加されたもの、タイプは作成時の汎用タイプ)
  • コード#コード#
    /**
    *    public class ListNode {
    *        int val;
    *        ListNode next = null;
    *
    *        ListNode(int val) {
    *            this.val = val;
    *        }
    *    }
    *
    */
    import java.util.ArrayList;
    import java.util.Stack;
    public class Solution {
        public ArrayList printListFromTailToHead(ListNode listNode) {
            Stack stack = new Stack();
            ArrayList array = new ArrayList();
            ListNode node = new ListNode(0);
            node.next = listNode;
            
            while(node.next != null){
                stack.push(node.next.val);
                node.next = node.next.next;
            }
            
            while(!stack.empty()){
                array.add(stack.pop());
            }
    
            return array;
        }
    }