C# 队列 (使用数组实现)
队列的实现
首先定义队列的类
然后是两个基础的方法(入队,出队)
出队
入队
扩容的方法
然后是测试
最后是全部的代码
using System;
namespace ConsoleApp18
{
class Program
{
static void Main(string[] args)
{
MyQueue<int> queue=new MyQueue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
queue.Enqueue(4);
queue.Enqueue(5);
queue.Enqueue(6);
queue.Enqueue(7);
queue.Enqueue(8);
queue.Enqueue(9);
queue.Enqueue(10);
queue.Enqueue(11);
while (queue.Count!=0)
{
Console.WriteLine(queue.Dequeue());
}
Console.ReadKey();
}
}
class MyQueue<T>
{
private T[] queues;
private int first;
private int list;
private int size = 5;//默认的长度为5
/// <summary>
/// 构造函数来初始化长度
/// </summary>
public MyQueue()
{
queues=new T[size];
}
/// <summary>
/// 队列中的元素数量
/// </summary>
public int Count
{
get
{
return first;
}
}
/// <summary>
/// 出队
/// </summary>
/// <returns></returns>
public T Dequeue()
{
if (first != 0)
{
first--;
return queues[list++];
}
else
{
throw new Exception("队列为空");
}
}
/// <summary>
/// 入队
/// </summary>
/// <param name="item"></param>
public void Enqueue(T item)
{
if (Count<size)
{
queues[first++] = item;
}
else
{
//扩容
Enlarge();
queues[first++] = item;
}
}
/// <summary>
/// 扩容
/// </summary>
private void Enlarge()
{
//扩容二倍
T[] tmpArr=new T[queues.Length*2];
for (int i = 0; i < queues.Length; i++)
{
tmpArr[i] = queues[i];
}
queues = tmpArr;
//size也要变为2倍
size *= 2;
}
}
}