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日

相关文章

  • C#数据结构与算法揭秘二 线性结构

    C#数据结构与算法揭秘二 线性结构 线性结构是指数据元素之间一对一的关系,即数据元素之间存在一个前驱和一个后继。一般有两种基本形式:线性表和栈、队列。 线性表 线性表是由同类型数据元素构成有序序列的线性结构,常被用于实现基于数组的数据结构,如向量、矩阵等。 线性表可以分为顺序表和链表两种。 顺序表(Sequence List):是把线性表的元素按照顺序存储在…

    数据结构 2023年5月17日
    00
  • C++实现KDTree 附完整代码

    对于“C++实现KDTree 附完整代码”的攻略,我会分为以下几个部分进行讲解: KDTree的基本概念和算法原理 KDTree的实现思路和整体代码结构 KDTree在实际应用中的应用场景 两个示例应用说明 KDTree基本概念和算法原理 KDTree全称是K-Dimensional Tree,即K维树,是一种便于高维空间数据检索的数据结构。其基本思路是对于…

    数据结构 2023年5月17日
    00
  • Halcon软件安装与界面简介

      1. 下载Halcon17版本到到本地 2. 双击安装包后 3. 步骤如下     界面分为四大块 1.    Halcon的五个助手 1)    图像采集助手:与相机连接,设定相机参数,采集图像 2)    标定助手:九点标定或是其它的标定,生成标定文件及内参外参,可以将像素单位转换为长度单位 3)    模板匹配助手:画取你想寻找的图像,设定参数,可…

    算法与数据结构 2023年4月19日
    00
  • Java数据结构最清晰图解二叉树前 中 后序遍历

    Java数据结构最清晰图解二叉树前 中 后序遍历 前言 二叉树是数据结构中至关重要的一种数据结构,对于计算机科学的学习和工作都是至关重要的。而遍历二叉树是二叉树的重要操作之一。 为了帮助读者更好地理解二叉树前、中、后序遍历的过程,本文介绍 Java 数据结构中最清晰的图解二叉树前、中、后序遍历攻略。 什么是二叉树? 二叉树是一种非常重要的数据结构,它由根节点…

    数据结构 2023年5月17日
    00
  • 数据结构 – 绪论

    01.绪论 1. 概念 1.1 数据结构 数据 Data:信息的载体。能被计算机识别并处理的符号的集合。 数据元素 Data element:数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素往往由若干数据项组成。数据项是组成数据元素的不可分割的最小单位。 如学生的信息记录就是一个数据元素,它由学号、姓名、性别等组成。 数据对象 Data obje…

    算法与数据结构 2023年4月18日
    00
  • 棋盘覆盖问题——分治法

    问题描述 有一个 x (k>0)的棋盘,恰好有一个方格与其他方格不同,称之为特殊方格。现在要用如下图所示的L形骨牌覆盖除了特殊方格以外的其他全部方格,骨牌可以任意旋转,并且任何两个骨牌不能重复。请给出一种覆盖方式。   样例: 输入: 输出:   思路——分治法: 将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。 递归…

    算法与数据结构 2023年4月27日
    00
  • LCA——ST表+欧拉序

    了解到一个quan新的东西: 用ST表(欧拉序)实现LCA(树上最近公共祖先) 欧拉序 前序遍历得到的序列,叫dfs序但数字可以重复出现,一进一出,叫欧拉序会发现根结点总在中间而根结点是该段序列深度最小的点因此两个点的LCA,就是在该序列上两个点第一次出现的区间内深度最小的那个点 即转化为区间RMQ问题,可以用ST表当然你可以再写一棵线段树(如果有修改操作)…

    算法与数据结构 2023年5月4日
    00
  • NTP时间同步服务器(频率同步)包含帧同步、载波同步、位同步

    NTP时间同步服务器(频率同步)包含帧同步、载波同步、位同步 NTP时间同步服务器(频率同步)包含帧同步、载波同步、位同步 京准电子科技官微——ahjzsz 同步的概念   同步技术是数字通信系统中非常重要的技术。一般来说数字通信系统要实现多种同步功能才能实现正确的数据通信任务。其技术目标是实现不同地域收发双方的同步通信互联,实现一致的信息数据交换,因此,通…

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