0001. C#−[System.Collections.GenericコレクションによるStack]
System.Collections.GenericコレクションのStackクラスを使用すると、LIFO(Last In First Out)型のデータ構造を簡単に実装できます。
System.Collections.GenericコレクションのStackクラス
スタック(stack)の特徴は、次のとおりです。
- LIFO(Last In First Out)型のデータ構造である。
- データを追加すると、必要に応じてサイズが自動的増加する。
- インデックサ(indexer)([ ])が無い。
- データを格納することを、pushと言う。
- データを取り出すことを、popと言う。
System.Collections.GenericコレクションのStackクラスの概要は、次のとおりです。
- null参照や要素の重複もデータとして格納できる。
- 格納するデータ型を、限定できる。
- Push()メソッドは、スタックの先頭にデータを追加する。
- Pop()メソッドは、スタックの先頭からデータを取り出して削除する。
- Peek()メソッドは、スタックの先頭からデータを取り出してデータを保持する。
- Countプロパティは、スタックのサイズを取得する。
- TrimExcess()メソッドは、スタックのサイズを減少する。
今回は、System.Collections.GenericコレクションのStackクラスを使用したスタックの実装例を掲載します。
《ソースコード》
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApp_stack1
{
/// <summary>
/// System.Collections.Generic名前空間のStackクラスを呼び出すStackMainクラスの定義。
/// </summary>
class StackMain
{
/// <summary>
/// アプリケーションのメインエントリポイント
/// <param name="args"></param>
/// </summary>
[STAThread]
static void Main(string[] args)
{
// スタック(stack)の作成
// スタック(stack)とは、LIFO(Last In First Out)型のデータ構造
// テキストP17の応用
Stack<object> st = new Stack<object>();
// スタック(stack)にデータを格納
// StackクラスのPush()メソッドによるデータの追加
st.Push("ADSL");
st.Push("BIOS");
st.Push("CATV");
// スタックサイズの確認
int nSize = st.Count;
Console.WriteLine("Stack size : {0}", nSize);
// 列挙子(Enumerator)によってデータを削除せずに取り出す
IEnumerator<object> ie = st.GetEnumerator();
while (ie.MoveNext())
Console.WriteLine(ie.Current);
// スタック(stack)から順にデータを削除しながら取り出す
// Pop()メソッドをコールするとサイズが変化する。
nSize = st.Count;
for (int i = 0; i < nSize; i++)
{
Console.WriteLine(st.Pop());
}
// スタック(stack)サイズの確認
nSize = st.Count;
Console.WriteLine("Stack size : {0}", nSize);
// コンソール画面を一時停止する
ConsoleKeyInfo conKeyInfo = Console.ReadKey(true);
ConsoleKey conKey = conKeyInfo.Key;
}
}
}
ダウンロードはこちら。
※ご注意:ダウンロードされるC#ソースファイルには、C#によるソースプログラムが記述されています。
update:2008.07.26
□トップページに戻る。□
Copyright (C) 2008 S.IKE