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