在C#中,您可以使用Queue<T>类来创建一个固定长度的队列。
以下是一个示例代码,演示如何实现一个固定长度的队列:
using System;
using System.Collections.Generic;
public class FixedLengthQueue<T>
{
private Queue<T> queue;
private int maxLength;
// 初始化
public FixedLengthQueue(int maxLength)
{
this.queue = new Queue<T>();
this.maxLength = maxLength;
}
/// <summary>
/// 添加元素
/// 超过指定长度,会先移除最早的元素,再添加新元素
/// </summary>
/// <param name="item"></param>
public void Enqueue(T item)
{
if (queue.Count >= maxLength)
{
queue.Dequeue();
}
queue.Enqueue(item);
}
// 移除最早的元素
public T Dequeue()
{
return queue.Dequeue();
}
// 返回队列的长度
public int Count
{
get { return queue.Count; }
}
}
// 使用样例
public class Program
{
public static void Main()
{
FixedLengthQueue<int> queue = new FixedLengthQueue<int>(5);
// 添加元素到队列
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
queue.Enqueue(4);
queue.Enqueue(5);
// 队列已满,再添加一个元素会移除最早的元素
queue.Enqueue(6);
// 输出队列中的元素
while (queue.Count > 0)
{
int item = queue.Dequeue();
Console.WriteLine(item);
}
}
}
在这个示例中,我们创建了一个FixedLengthQueue<T>类,它使用Queue<T>作为内部实现,并在构造函数中接受一个maxLength参数,表示队列的最大长度。
在Enqueue方法中,我们首先检查队列的长度是否已达到最大长度。
如果是,我们使用Dequeue方法移除最早的元素。
然后,我们使用Enqueue方法将新的元素添加到队列中。
在Dequeue方法中,我们直接调用Queue<T>的Dequeue方法来移除并返回队列中的第一个元素。
在Main测试方法中,我们创建了一个固定长度为5的整数队列,并添加了6个元素。
由于队列的长度限制为5,当添加第6个元素时,最早的元素将被移除。
然后,我们使用Dequeue方法逐个输出队列中的元素。