スタック
日本語 | 積み上げ |
英語 | stack |
ふりがな | すたっく |
フリガナ | スタック |
複数のデータを格納するとき、最後に格納したデータから取り出す方式のこと。
データ構造のひとつ。「LIFO」「FILO」「後入れ先出し」「先入れ後出し」とも言う。
構造的には、配列のように一列に並べた構造をしている。
ただし、どの位置のデータも任意に取得できるわけではなく、最後に格納したデータしか取り出すことができない。
スタックは、テーブルの上に積み上げたコインのようなものである。間に挟まれたコインを取り出すことはできない。取れるのは一番上に積まれたコイン、つまり一番最後に積んだコインだけである。
スタックは「キューの逆」と言える。
J2SEのコレクションにStackクラスがあり、同様の機能を持つ。
push()メソッドでデータを入れ、pop()メソッドでデータを取り出す。
また、ローカル変数の確保・解放の順番もスタックと同様のため、ローカル変数を置くメモリ領域を「スタック領域」という。また、メソッドの呼び出し順を調べることを「スタックトレース」と言う。
データ構造のひとつ。「LIFO」「FILO」「後入れ先出し」「先入れ後出し」とも言う。
構造的には、配列のように一列に並べた構造をしている。
ただし、どの位置のデータも任意に取得できるわけではなく、最後に格納したデータしか取り出すことができない。
スタックは、テーブルの上に積み上げたコインのようなものである。間に挟まれたコインを取り出すことはできない。取れるのは一番上に積まれたコイン、つまり一番最後に積んだコインだけである。
スタックは「キューの逆」と言える。
J2SEのコレクションにStackクラスがあり、同様の機能を持つ。
push()メソッドでデータを入れ、pop()メソッドでデータを取り出す。
また、ローカル変数の確保・解放の順番もスタックと同様のため、ローカル変数を置くメモリ領域を「スタック領域」という。また、メソッドの呼び出し順を調べることを「スタックトレース」と言う。
参考サイト
// Sample.java
import java.util.Stack;
public class Sample
{
public static void main( String[] args )
{
Stack stack = new Stack();
// 3つデータを突っ込みます。
stack.push( new Integer( 100 ) );
stack.push( new Integer( 200 ) );
stack.push( new Integer( 300 ) );
System.out.println( stack.size() );
// 3
// 取り出します。
System.out.println( stack.pop() );
System.out.println( stack.pop() );
System.out.println( stack.pop() );
// 300
// 200
// 100
// このように、一番最後に取得したものから取り出します。
// 取り出したら、その取り出したものは取り除かれます。
// これがスタックの特徴です。
System.out.println( stack.size() );
// 0
}
}
import java.util.Stack;
public class Sample
{
public static void main( String[] args )
{
Stack stack = new Stack();
// 3つデータを突っ込みます。
stack.push( new Integer( 100 ) );
stack.push( new Integer( 200 ) );
stack.push( new Integer( 300 ) );
System.out.println( stack.size() );
// 3
// 取り出します。
System.out.println( stack.pop() );
System.out.println( stack.pop() );
System.out.println( stack.pop() );
// 300
// 200
// 100
// このように、一番最後に取得したものから取り出します。
// 取り出したら、その取り出したものは取り除かれます。
// これがスタックの特徴です。
System.out.println( stack.size() );
// 0
}
}
// Sample.java import java.util.Stack; public class Sample { public static void main( String[] args ) { Stack stack = new Stack(); // 3つデータを突っ込みます。 stack.push( new Integer( 100 ) ); stack.push( new Integer( 200 ) ); stack.push( new Integer( 300 ) ); System.out.println( stack.size() ); // 3 // 取り出します。 System.out.println( stack.pop() ); System.out.println( stack.pop() ); System.out.println( stack.pop() ); // 300 // 200 // 100 // このように、一番最後に取得したものから取り出します。 // 取り出したら、その取り出したものは取り除かれます。 // これがスタックの特徴です。 System.out.println( stack.size() ); // 0 } }