设计链式队列类,实现IQueue<T>接口
时间: 2024-10-20 10:19:02 浏览: 29
设计链式队列类通常会涉及到单链表的数据结构,因为链表可以方便地实现队列的特性——先进先出(FIFO)。首先,我们需要创建一个Node类作为链表节点,包含数据和指向下一个节点的引用。然后,我们可以创建一个名为`LinkedListQueue`的类,它实现了`IQueue<T>`接口。
```csharp
public class Node<T>
{
public T Data { get; set; }
public Node<T> Next { get; set; }
}
public interface IQueue<T>
{
void Enqueue(T item);
T Dequeue();
bool IsEmpty();
int Count();
}
public class LinkedListQueue<T> : IQueue<T>
{
private Node<T> _head;
private Node<T> _tail;
public LinkedListQueue()
{
_head = null;
_tail = null;
}
// 实现Enqueue方法
public void Enqueue(T item)
{
if (_head == null)
{
_head = new Node<T> { Data = item, Next = null };
_tail = _head;
}
else
{
_tail.Next = new Node<T> { Data = item, Next: null };
_tail = _tail.Next;
}
}
// 实现Dequeue方法
public T Dequeue()
{
if (IsEmpty())
{
throw new InvalidOperationException("The queue is empty");
}
T removedItem = _head.Data;
_head = _head.Next;
if (_head == null)
{
_tail = null;
}
return removedItem;
}
// 实现IsEmpty和Count方法
public bool IsEmpty()
{
return _head == null;
}
public int Count()
{
int count = 0;
Node<T> current = _head;
while (current != null)
{
count++;
current = current.Next;
}
return count;
}
}
```
阅读全文