C#数据结构之队列(Quene)实例详解

C#数据结构之队列(Quene)实例详解

什么是队列?

队列是一种线性数据结构,只允许在队列的两端进行操作。队列是一种FIFO(First in First Out)的数据结构,即先进先出,类似于排队买票的场景。

C#中的队列(Quene)

C#中队列(Quene)是System.Collections命名空间中的一个类,可以通过引入System.Collections来使用它。如下所示创建一个队列:

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

队列的基本操作

入队(Enqueue)

向队列中添加元素可以使用Enqueue()方法:

queue.Enqueue("a");
queue.Enqueue("b");
queue.Enqueue("c");
queue.Enqueue("d");

出队(Dequeue)

从队列中取出元素可以使用Dequeue()方法:

string str = queue.Dequeue();

查看队列头元素(Peek)

通过Peek()方法查看队列头元素,但是不会将它从队列中取出:

string peekStr = queue.Peek();

判断队列是否为空(Count)

使用Count方法判断队列中是否有元素:

int count = queue.Count;
if (count > 0)
{
    // 队列不为空
}

队列的示例说明

队列实现排队叫号的场景

Queue<int> queue = new Queue<int>();

for (int i = 1; i <= 10; i++)
{
    queue.Enqueue(i);
}

while (queue.Count > 0)
{
    int num = queue.Dequeue();
    Console.WriteLine("请" + num + "号到界面前进行业务办理!");
}

队列实现消费者生产者模型的场景

Queue<int> queue = new Queue<int>();
int maxSize = 5;

new Thread(() =>
{
    while (true)
    {
        lock (queue)
        {
            if (queue.Count < maxSize)
            {
                int num = new Random().Next(1, 100);
                Console.WriteLine("生产者生产了{0},当前队列长度为{1}", num, queue.Count);
                queue.Enqueue(num);
            }
        }
    }
}).Start();

new Thread(() =>
{
    while (true)
    {
        lock (queue)
        {
            if (queue.Count > 0)
            {
                int num = queue.Dequeue();
                Console.WriteLine("消费者消费了{0},当前队列长度为{1}", num, queue.Count);
            }
        }
    }
}).Start();

在这个示例中我们定义了一个长度为5的队列,生产者线程不断生产随机数并加入队列中,直到队列达到最大长度,消费者线程不断从队列中取出元素并处理。这样就实现了消费者生产者模型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#数据结构之队列(Quene)实例详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • Java 数据结构线性表之顺序存储详解原理

    Java 数据结构线性表之顺序存储详解原理 一、什么是线性表 线性表(Linear List)指的是同一类数据元素的集合,而且这些元素之间是有序的。线性表具有两个显著的特点:第一,有且仅有一个被称为“第一个”的数据元素;第二,有且仅有一个被称为“最后一个”的数据元素;此外,除第一个和最后一个数据元素外,其它数据元素均有且仅有一个直接前驱和一个直接后继。 二、…

    数据结构 2023年5月17日
    00
  • AtCoder Beginner Contest 300

    A – N-choice question (abc300 a) 题目大意 给定一个元素互不相同的数组\(c\)和 \(a,b\),找到 \(i\)使得 \(c_i = a + b\) 解题思路 直接for循环寻找即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = …

    算法与数据结构 2023年4月30日
    00
  • Python描述数据结构学习之哈夫曼树篇

    Python描述数据结构学习之哈夫曼树篇攻略 简介 本篇攻略旨在介绍哈夫曼树的概念、构建方法和应用场景,并结合Python代码进行演示。 哈夫曼树概念 哈夫曼树(Huffman Tree)又称最优树,它是一种带权路径长度最短的树。所谓带权路径长度,就是每个节点的权值乘以其到根节点的路径长度(即树的层数)之和。哈夫曼树广泛应用于数据压缩领域。 哈夫曼树构建方法…

    数据结构 2023年5月17日
    00
  • Java数据结构之图的路径查找算法详解

    Java数据结构之图的路径查找算法详解 什么是图? 在计算机科学中,图是一种非常常见的数据结构,用于表示图形和网络等概念。图由节点和边组成,其中节点表示实体,边表示这些实体之间的关系。节点和边可以表示各种各样的实体和关系,因此图在计算机科学中具有广泛的应用。 图的路径查找算法 路径查找算法是一个用途广泛的算法,它用于查找从一个节点到另一个节点的路径。在图中,…

    数据结构 2023年5月17日
    00
  • Java 超详细讲解数据结构的应用

    Java 超详细讲解数据结构的应用 简介 “Java 超详细讲解数据结构的应用”是一个基于Java语言的数据结构教程,其中包含了各种数据结构的理论知识和实际应用,在学习过程中可以帮助初学者更好地理解数据结构的本质和实际应用场景。 学习路径 数据结构理论 在本教程中,我们首先介绍了数据结构的几种基本分类和常用的数据结构,包括数组、链表、栈、队列、堆、树、图等等…

    数据结构 2023年5月17日
    00
  • Java数据结构之图的两种搜索算法详解

    Java数据结构之图的两种搜索算法详解 引言 图是现实世界中最为普遍的现象之一,因此对于图的分析和操作是计算机科学和工程中最为重要的问题之一。在本文中,我们将对图结构的两种搜索算法进行详细讨论和研究,这些算法是图论研究的基本工具。 图的定义 在计算机科学和数学领域中,图是由若干个节点(或称为顶点)和它们之间的边组成的一种数据结构。 图的两种搜索算法 图的搜索…

    数据结构 2023年5月17日
    00
  • 二叉搜索树的本质

    引言 打算写写树形数据结构:二叉查找树、红黑树、跳表和 B 树。这些数据结构都是为了解决同一个基本问题:如何快速地对一个大集合执行增删改查。 本篇是第一篇,讲讲搜索树的基础:二叉搜索树。 基本问题 如何在一千万个手机号中快速找到 13012345432 这个号(以及相关联信息,如号主姓名)? 最笨的方案 把一千万个手机号从头到尾遍历一遍,直到找到该手机号,返…

    算法与数据结构 2023年4月17日
    00
  • C语言 超详细总结讲解二叉树的概念与使用

    C语言 超详细总结讲解二叉树的概念与使用 1. 什么是二叉树? 二叉树是一种树状数据结构,其中每个节点最多有两个子节点,被称为左子节点和右子节点。具有以下几个特点: 每个节点最多有两个子节点; 左子节点可以为空,右子节点也可以为空; 二叉树的每个节点最多有一个父节点; 二叉树通常定义为递归模式定义,即每个节点都可以看做一棵新的二叉树。 2. 二叉树的遍历方式…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部