C#中列队的正确使用方法

作者:微信公众号:【架构师老卢】
5-3 15:41
15

概述:队列是一种遵循先进先出 (FIFO) 原则的数据结构。这意味着添加到队列中的第一个项目将是离开队列的第一个项目。在本文中,我将介绍如何在 .NET 中使用此数据结构。为了说明队列的工作原理,请考虑一排等待服务的人,其中第一个加入队列的人是第一个被服务的人。同样,在处理队列时,元素在队列的后部(enqueue)添加,并从队列的前面(取消排队)中删除。出于演示目的,我使用 .NET 创建了一个控制台应用程序。队列数据结构提供了一系列可用于使用它的方法。这些是主要方法:Enqueue:这会将元素添加到堆栈的后部/后部。Dequeue:这将删除并返回队列前面的元素。Peek:这将返回队列前面的元素(不

队列是一种遵循先进先出 (FIFO) 原则的数据结构。这意味着添加到队列中的第一个项目将是离开队列的第一个项目。在本文中,我将介绍如何在 .NET 中使用此数据结构。

为了说明队列的工作原理,请考虑一排等待服务的人,其中第一个加入队列的人是第一个被服务的人。同样,在处理队列时,元素在队列的后部(enqueue)添加,并从队列的前面(取消排队)中删除。

出于演示目的,我使用 .NET 创建了一个控制台应用程序。

队列数据结构提供了一系列可用于使用它的方法。这些是主要方法

  • Enqueue:这会将元素添加到堆栈的后部/后部。
  • Dequeue:这将删除并返回队列前面的元素。
  • Peek:这将返回队列前面的元素(不删除它)。
  • Count:返回队列中的元素数。
  • **Contains:**返回元素是否在队列中。

在下图中,您可以看到执行 and 操作时会发生什么:EnqueueDequeue

  • 元素 1 位于队列的前面,执行操作时,元素 1 将从队列中删除。Dequeue
  • 此队列上的最后一个元素是元素 6,执行操作时,元素 7 将被添加到队列的末尾。Enqueue

创建队列

要在 C# 中创建堆栈,您可以使用泛型类声明它,其中 是将存储在队列中的元素类型。例如,下面我将创建一个字符串元素的队列:QueueT

Queue<string> queueDemo = new Queue<string>();  
  
// or  
  
var queueDemo = new Queue<string>();

向队列添加元素

在下面的代码中,我将向 :queueDemo

queueDemo.Enqueue("Julie");  
queueDemo.Enqueue("Ana");  
queueDemo.Enqueue("Bob");

对于每个操作,元素将添加到队列的后面:Enqueue

打印此堆栈的值时,输出如下:

Julie  
Ana  
Bob

从队列中删除第一个元素

该操作可用于从队列中删除第一个元素。例如:Dequeue

queueDemo.Dequeue();

执行操作时,将删除添加到队列中的第一个元素(“Julie”):Dequeue

在执行 Dequeue 方法后打印队列元素时,输出如下:

Ana  
Bob

从队列中获取第一个元素

若要从队列中检索第一个元素,可以使用以下方法:Peek

var firstElement = queueDemo.Peek();

现在打印时,这是输出:firstElement

Ana

包含操作

若要检查队列中是否存在元素,可以使用该方法,并将要搜索的值作为参数传递:Contains

 var containsBob = queueDemo.Contains("Bob");  
 var containsSofia = queueDemo.Contains("Sofia");

打印 和 时,这是输出:containsBobcontainsSofia

Queue contains Bob: True  
Queue contains Sofia: False

检索队列中的元素数

若要获取队列中存在的元素数量,或检查队列是否为空,可以使用以下方法:Count

var numberOfElements = stackDemo.Count;

打印时,输出为:amountOfElements

numberOfElements: 2

使用队列的有用案例

队列数据结构有用的一些常见方案包括:

  • 任务或作业调度:队列可用于以先进先出 (FIFO) 方式调度和处理任务或作业,确保公平和有序的执行,例如,打印队列,其中文档被添加到队列中并按接收顺序打印。
  • 广度优先搜索 (BFS):队列通常用于 BFS 算法中,用于逐级遍历图形或树。
  • 多线程和任务管理:队列可用于多线程应用程序,用于在不同线程之间进行通信或管理线程池中的任务。
  • 呼叫中心系统:将来电添加到队列中,并由座席按接收顺序接听。

队列是一种线性数据结构,遵循 FIFO(先进先出)原则,在添加到队列的第一个元素必须是第一个要处理的元素的情况下非常有用。

相关留言评论
昵称:
邮箱:
阅读排行