【.NET】 System.Collections.GenericのStack<T>を試す

.NET Framework コンピュータ
.NET Framework
using System.Collections.Generic;
// 初期化
var stk = new Stack<string>();

// Stackに要素を追加
stk.Push("A");
stk.Push("B");
stk.Push("C");
stk.Push("D");
stk.Push("E");

// Peek()で先頭の要素を取り出し
var s = stk.Peek();
Console.WriteLine(s);
/*結果
E
*/
//Console.WriteLine(stk[0]); //<= NG

// Stackが空になるまで要素を取り出し
while(stk.Count > 0)
{
    s = stk.Pop();
    Console.WriteLine(s);
}
/* 結果
E
D
C
B
A
*/

要素の追加はPush()要素の取り出しはPop()になります。データは後入れ先出しの順番に取り出されているので、前回扱った「Queue」と逆の動きになっています。
サンプルプログラムの内容も、オブジェクト名やメソッドが異なりますが、ほぼ同じもので、結果だけが逆順になっています。
「Stack」は「List」や「Dictionary」と比べると用途が限定的なため、その存在を忘れてしまい、ほぼ使ったことはありません。
何かの折「Stack」を目にするたびにC#でも「Stack」って使えるんだと調べなおすことが、たびたびあります。
ただ、「Queue」などもそうですが、要素の追加した順番に要素を利用する場合「Stack」を使ってあげたほうが、目的にあった手法を使うことで素直なプログラムになります。
だれが見ても分かりやすいプログラムにすると、未来の自分が見返してみる場合もよい結果が生まれると考えられます。

コメント