using System;
using System.Collections.Generic;
using System.Text;
namespace Collections
{
///
/// スタック(FILOバッファ)。
///
/// 要素の型
class Queue
{
#region フィールド
CircularBuffer buffer;
#endregion
#region 初期化
public Queue() { this.buffer = new CircularBuffer(); }
public Queue(int capacity) { this.buffer = new CircularBuffer(capacity); }
#endregion
#region 要素の挿入・削除
///
/// 要素のエンキュー。
///
/// 挿入したい要素
///
/// 名前は Stack に合わせて Push にしてある。
///
public void Push(T elem)
{
this.buffer.InsertLast(elem);
}
///
/// 要素を1つデキュー。
///
///
/// 名前は Stack に合わせて Pop にしてある。
/// 今回の実装では、先頭要素の読み出しと削除は別に行う。
/// この Pop では削除のみ。
/// 読み出しには Top プロパティを使う。
///
public void Pop()
{
this.buffer.EraseFirst();
}
///
/// 先頭要素の読み出し。
///
public T Top
{
get { return this.buffer[0]; }
}
public int Count
{
get { return this.buffer.Count; }
}
#endregion
}
}