用C#编写一个类实现队列功能,并编写一个测试类测试该队列的功能
时间: 2024-10-06 19:05:34 浏览: 35
c#结课作业.doc
在C#中,我们可以使用`System.Collections.Generic`命名空间下的`Queue<T>`类来实现一个队列数据结构。这里是一个简单的实现:
```csharp
using System;
public class CustomQueue<T>
{
private Queue<T> queueImpl = new Queue<T>();
// 添加元素到队尾
public void Enqueue(T item)
{
queueImpl.Enqueue(item);
}
// 从队头移除并返回元素
public T Dequeue()
{
if (queueImpl.Count == 0)
{
throw new InvalidOperationException("Queue is empty.");
}
return queueImpl.Dequeue();
}
// 查看队头元素但不移除
public T Peek()
{
if (queueImpl.Count == 0)
{
throw new InvalidOperationException("Queue is empty.");
}
return queueImpl.Peek();
}
// 检查队列是否为空
public bool IsEmpty()
{
return queueImpl.Count == 0;
}
// 返回队列中的元素数量
public int Count()
{
return queueImpl.Count;
}
}
// 测试类
public class CustomQueueTest
{
[Test]
public void TestCustomQueue()
{
CustomQueue<int> testQueue = new CustomQueue<int>();
// 入队
testQueue.Enqueue(1);
testQueue.Enqueue(2);
testQueue.Enqueue(3);
// 出队并检查
Assert.AreEqual(1, testQueue.Dequeue());
Assert.AreEqual(2, testQueue.Peek()); // 队头元素
// 检查大小和空状态
Assert.AreEqual(2, testQueue.Count);
Assert.IsFalse(testQueue.IsEmpty());
// 空队列测试
testQueue.Enqueue(4);
testQueue.Clear();
Assert.IsTrue(testQueue.IsEmpty());
}
}
```
在这个例子中,`CustomQueue`类实现了基本的队列操作,而`CustomQueueTest`类则用于测试这些功能。
阅读全文