2025-11-07
C#
00

目录

队列的基本概念
队列的基本操作
队列的特点
队列的应用场景
创建一个队列
向队列中添加元素(Enqueue)
从队列中移除元素(Dequeue)
查看队列头部元素(Peek)
获取队列中元素的数量(Count)
清空队列(Clear)
遍历队列中的元素
队列的实现示例
总结

队列的基本概念

队列(Queue)是一种先进先出(First In First Out,FIFO)的数据结构,它允许在一端(通常称为队尾或rear)添加元素,在另一端(队头或front)移除元素。队列的这种特性使其在需要按顺序处理数据的场景中非常有用。

队列的基本操作

队列的基本操作包括:

  • Enqueue:在队列的末尾添加一个元素。
  • Dequeue:移除并返回队列的第一个元素。
  • Peek:返回队列的第一个元素但不移除它。
  • Count:获取队列中元素的数量。
  • Clear:清空队列中的所有元素。

队列的特点

  • 有序性:元素保持添加的顺序,先进入的元素先被移除。
  • 动态大小:队列的大小不是固定的,可以随着元素的添加和移除而改变。
  • 限制访问:只能访问队列的头部和尾部元素,不允许随机访问。

队列的应用场景

  • 任务调度:操作系统中的任务调度器使用队列管理进程执行。
  • 打印任务管理:打印机的打印任务排队等待处理。
  • 实时系统:交通信号灯、呼叫中心等实时系统中的事件排队处理。

C# 中的 Queue 类

在C#中,Queue<T> 类提供了队列的实现。以下是 Queue<T> 类的一些基本用法示例:

创建一个队列

C#
Queue<string> queue = new Queue<string>();

向队列中添加元素(Enqueue)

C#
queue.Enqueue("Alice"); queue.Enqueue("Bob"); queue.Enqueue("Charlie");

从队列中移除元素(Dequeue)

C#
string firstPerson = queue.Dequeue(); // 返回"Alice",并从队列中移除

查看队列头部元素(Peek)

C#
string nextPerson = queue.Peek(); // 返回"Bob",不从队列中移除

获取队列中元素的数量(Count)

C#
int count = queue.Count; // 返回2,因为队列中有两个元素

清空队列(Clear)

C#
queue.Clear(); // 清空队列中的所有元素

遍历队列中的元素

C#
foreach (string name in queue) { Console.WriteLine(name); }

遍历队列不会改变队列的内容。

队列的实现示例

下面是一个使用 Queue<T> 类的完整示例,该示例演示了如何在C#中使用队列模拟银行排队服务。

C#
using System; using System.Collections.Generic; class Program { static void Main() { Queue<string> bankQueue = new Queue<string>(); // 客户到达银行并排队 bankQueue.Enqueue("Alice"); bankQueue.Enqueue("Bob"); bankQueue.Enqueue("Charlie"); Console.WriteLine("Customers in queue:"); foreach (string customer in bankQueue) { Console.WriteLine(customer); } // 开始服务队列中的客户 while (bankQueue.Count > 0) { string servedCustomer = bankQueue.Dequeue(); Console.WriteLine("Serving customer: " + servedCustomer); } Console.WriteLine("All customers have been served."); } }

输出结果将会是:

text
Customers in queue: Alice Bob Charlie Serving customer: Alice Serving customer: Bob Serving customer: Charlie All customers have been served.

image.png

在这个示例中,我们创建了一个字符串类型的队列 bankQueue,模拟了客户到达银行并排队的情况。随后,我们通过循环调用 Dequeue 方法为队列中的每个客户提供服务,直到队列为空。

总结

队列是一种基本的数据结构,其FIFO特性使得它在多种场景下都非常有用。C#通过 Queue<T> 类提供了队列的实现,它包含了 EnqueueDequeuePeekCountClear 等方法,使得在C#中实现和操作队列变得非常简单。无论是在实时系统中的任务调度,还是在银行排队系统的模拟中,队列都是一个不可或缺的工具。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!