先入先出队列
一个先入先出队列
看书的时候看到了这个,先把他写在这。作为一个归类吧。利用一个数组提供循环缓冲区来容纳数据。
class Queue
{
private int[] data = null;
private int head = 0, tail = 0;
private const int MaxSize = 100;
private int elementCount = 0;
public Queue()
{
data = new int[MaxSize];
}
public Queue(int size)
{
if(size > 0)
{
data = new int[size];
}
else
{
throw new ArgumentOutOfRangeException("size", size, "Must be greater than zero");
}
}
public void Enqueue(int item)
{
if (this.elementCount == this.data.Length)
{
throw new Exception("Queue full");
}
this.data[this.head] = item;
this.head++;
this.head %= this.data.Length;
this.elementCount++;
}
public int Dequeue()
{
if (this.elementCount == 0)
{
throw new Exception("Queue empty");
}
int queueItem = this.data[this.tail] ;
this.tail--;/* this.head++;*/
this.tail %= this.data.Length;
this.elementCount --;
return queueItem;
}
}