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日

相关文章

  • PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

    下面我来为大家详细讲解一下“PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例”的攻略。 一、SplQueue 首先,我们先来介绍一下SplQueue。SplQueue是一个双向队列,它基于一个双向链表实现,可以在队列的两端插入和删除元素,既可以按照先进先出的顺序来操作队列,也可以反过来按照先进后出的顺序来操作…

    数据结构 2023年5月17日
    00
  • C语言数据结构 双向链表的建立与基本操作

    C语言数据结构 双向链表的建立与基本操作 双向链表的定义 双向链表是一种常见的线性数据结构,它由多个结点组成,每个结点有两个指针,一个指向前一个结点,一个指向后一个结点。对于一个双向链表,我们可以获得其第一个结点和最后一个结点的指针,也可以沿着链表从前往后或从后往前遍历链表的每个结点。 双向链表的建立 我们首先需要定义一个双向链表的结点类型,包括两个指针,一…

    数据结构 2023年5月17日
    00
  • Java数据结构常见几大排序梳理

    Java数据结构常见几大排序梳理 在Java中,数据排序是非常常见的操作。下面我们详细讲解一下Java数据结构常见几大排序的梳理。 常见几大排序 Java数据结构中常见几种排序算法包括: 冒泡排序(Bubble Sort) 快速排序(Quick Sort) 插入排序(Insertion Sort) 选择排序(Selection Sort) 希尔排序(Shel…

    数据结构 2023年5月17日
    00
  • 李航统计学习概述

    监督学习 感知机 概念: 感知机模型的基本形式是: \(f(x) = sign(w \cdot x + b)\) 其中,\(x\) 是输入样本的特征向量,\(w\) 是权值向量,\(b\) 是偏置量,\(w \cdot x\) 表示向量 \(w\) 和 \(x\) 的点积。\(sign\) 函数表示符号函数,当输入大于 0 时输出 1,否则输出 -1。 要求…

    算法与数据结构 2023年4月25日
    00
  • Java深入了解数据结构之栈与队列的详解

    Java深入了解数据结构之栈与队列的详解 1. 栈的概念 栈(Stack)是一种先进后出的数据结构,类似于一个箱子,新的物品只能放到箱子的顶部,旧的物品只能从箱子的顶部取出。栈通常有下面几个基本操作: push:将元素压入栈中,放在栈顶。 pop:将栈顶元素弹出,如果栈为空,则抛出异常。 peek:返回栈顶元素,但不将其弹出,如果栈为空,则抛出异常。 isE…

    数据结构 2023年5月17日
    00
  • Redis五种数据结构在JAVA中如何封装使用

    Redis 是一款高性能的键值存储数据库,支持五种不同的数据结构:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。在Java中使用Redis需要封装对应的数据结构,本文将详细介绍如何封装Redis的五种数据结构。 封装Redis字符串数据结构 Redis字符串数据结构对应Java中的String类…

    数据结构 2023年5月17日
    00
  • Python数据结构之Array用法实例

    Python数据结构之Array用法实例 在Python中,Array是一种很有用的数据结构类型。它可以通过简单的方式存储一系列数据,提供快速的索引访问和高效的操作。本文将详细探讨Python中Array的用法,包括创建Array、插入、删除、修改、查找和遍历等。 创建Array 要创建一个Array,需要使用array模块。在调用前,需要首先导入该模块。A…

    数据结构 2023年5月17日
    00
  • 图计算引擎分析–GridGraph

    作者:京东科技 李永萍 GridGraph:Large-Scale Graph Processing on a Single Machine Using 2-Level Hierarchical Partitioning 图计算框架 图计算系统按照计算方式划分可分为:单机内存图处理系统,单机核外图处理系统,分布式内存图处理系统,分布式核外图处理系统。本文将详…

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