[剣指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(カッコに追加されたもの、タイプは作成時の汎用タイプ) コード#コード#
チェーンテーブルを入力し、チェーンテーブルの値が末尾から順にArrayListを返します.
プログラムコア思想
/**
* 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;
}
}