在数据结构中已经学习了队列,请用C#编写一个类实现队列的功能,并编写一个测试类测试该队列的功能。(参考.Net的类库中已经封装好了的队列类:System.Collections.Queue,可以将自己做好的类,和它进行比较)
时间: 2024-10-12 16:06:24 浏览: 38
C#编写一个类实现队列的功能,
5星 · 资源好评率100%
在.NET中,`System.Collections.Generic.Queue<T>`已经为我们提供了一个高效、线程安全的队列实现。然而,为了理解底层原理并锻炼编程技能,我们可以手动创建一个简单的队列类。这里我将使用泛型和循环来进行元素的添加和删除操作。
首先,我们创建一个名为`CustomQueue`的自定义队列类:
```csharp
public class CustomQueue<T>
{
private List<T> _items = new List<T>();
// 添加元素到队尾
public void Enqueue(T item)
{
_items.Add(item);
}
// 从队头移除并返回元素
public T Dequeue()
{
if (_items.Count == 0)
throw new InvalidOperationException("Queue is empty");
return _items.RemoveAt(0);
}
// 查看队列是否为空
public bool IsEmpty => _items.Count == 0;
// 返回队列大小
public int Count => _items.Count;
}
```
然后,我们创建一个`CustomQueueTest`类来进行测试:
```csharp
using System;
public class CustomQueueTest
{
public static void Main()
{
CustomQueue<int> queue = new CustomQueue<int>();
// 测试添加
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
Console.WriteLine($"Queue size: {queue.Count}"); // 应该输出 3
// 测试弹出
int firstElement = queue.Dequeue();
Console.WriteLine($"First element: {firstElement}"); // 应该输出 1
Console.WriteLine($"Queue size after dequeue: {queue.Count}"); // 应该输出 2
// 测试空队列异常
try
{
queue.Dequeue();
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message); // 应该输出 "Queue is empty"
}
}
}
```
在这个例子中,`CustomQueue`类实现了基本的队列操作,而`CustomQueueTest`则展示了如何使用这个队列。你可以对比一下`CustomQueue`和`System.Collections.Queue`之间的性能差异以及功能完整性。
阅读全文