队列的实现还是依托于一开始所写的数组
下面是队列的实现代码
?
class ArrayQueue<E> : Queue<E>
{
private Array<E> array;
public ArrayQueue(int capacity)
{
array = new Array<E>(capacity);
}
public ArrayQueue()
{
array = new DataStructure.Array<E>();
}
public E dequeue()
{
return array.removeFirst();
}
public void enqueue(E e)
{
array.addLast(e);
}
public E getFront()
{
return array.getFirst();
}
public int getSize()
{
return array.getSize();
}
public bool isEmpty()
{
return array.isEmpty();
}
public int getCapacity()
{
return array.getCapacity();
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("Queue:");
sb.Append("front [");
for(int i = 0; i < array.getSize(); i++)
{
sb.Append(array.get(i));
if (i != array.getSize() - 1)
sb.Append(", ");
}
sb.Append("] tail");
return sb.ToString();
}
}
下面我们写个测试类测试下
static void Main(string[] args)
{
ArrayQueue<int> queue = new DataStructure.ArrayQueue<int>();
for(int i = 0; i < 10; i++)
{
queue.enqueue(i);
Console.WriteLine(queue);
if (i % 3 == 2)
{
queue.dequeue();
Console.WriteLine(queue);
}
}
Console.ReadKey();
}
我们可以看到测试结果,完成了队列的功能