返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#队列的简单使用
  • 615
分享到

C#队列的简单使用

2024-04-02 19:04:59 615人浏览 独家记忆
摘要

队列的特性很简答,就是先进先出,一般利用数组来实现。 实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。 实现队列的关键在于队头指针和队尾指针的设置: 假设

队列的特性很简答,就是先进先出,一般利用数组来实现。

实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。

实现队列的关键在于队头指针和队尾指针的设置:

  • 假设初始状态下,队头指针为0,队尾指针为-1,那么两个指针指的位置分别就是队头与队尾。当队尾的下一个是队头时队空,当队尾的下下个是队头时队满。
  • 假设初始状态下,队头队尾指针都为0,那么队尾指针指的是队尾,而队头指针的下一个位置才是队头。当两指针相等时队空,当队尾指针的下一个是队头时队满。

如果我们画个图就会发现,不管怎么设置指针,队满时数组一定还有一个空位。所以数组长度应该比队列长度多1。

同时为了方便,我们会把队列指针设置为循环的,即每次移动后取余数组的长度。

public class MyCircularQueue {
    private int front;
    private int rear;
    private int[] queue;
 
    public MyCircularQueue(int k) {
        queue=new int[k+1];
        front=0;
        rear=-1;
    }
    
    public bool EnQueue(int value) {
        if((rear+2)%queue.Length==front)
        return false;
        rear++;rear=rear%queue.Length;
        queue[rear]=value;
        return true;
    }
    
    public bool DeQueue() {
        if((rear+1)%queue.Length==front)
        return false;
        front++;front=front%queue.Length;
        return true;
    }
    
    public int Front() {
        if(!IsEmpty())
        return queue[front];
        else
        return -1;
    }
    
    public int Rear() {
        if(!IsEmpty())
        return queue[rear];
        else
        return -1;
    }
    
    public bool IsEmpty() {
        if((rear+1)%queue.Length==front)
        return true;
        else
        return false;
    }
    
    public bool IsFull() {
        if((rear+2)%queue.Length==front)
        return true;
        else
        return false;
    }
}

实际上C#也有一个队列库,如下图所示

 需要注意的是Dequeque和ToArray的返回类型都是object,可能需要进行强制转换

   class Program
   {
      static void Main(string[] args)
      {
         Queue q = new Queue();
 
         q.Enqueue('A');
         char ch = (char)q.Dequeue();
         Console.WriteLine("The removed value: {0}", ch);
       }
}

到此这篇关于C#队列的简单使用的文章就介绍到这了,更多相关C#队列内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#队列的简单使用

本文链接: https://lsjlt.com/news/142892.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#队列的简单使用
    队列的特性很简答,就是先进先出,一般利用数组来实现。 实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。 实现队列的关键在于队头指针和队尾指针的设置: 假设...
    99+
    2024-04-02
  • redis实现简单队列
    在工作中,时常会有用到队列的场景,比较常见的用rabbitMQ这些专业的组件,官网地址是:http://www.rabbitmq.com,重要的是官方有.net的客户端,但是如果对rabbitMQ不熟悉的话...
    99+
    2022-06-04
    队列 简单 redis
  • 简单介绍python的双向队列
    介绍   大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点)。但是删除列表的第一个元素(抑或是在第一个元素之前添加一个...
    99+
    2023-01-30
    队列 双向 简单
  • C#队列如何使用
    本篇内容介绍了“C#队列如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!队列的特性很简答,就是先进先出,一般利用数组来实现。实现队列自...
    99+
    2023-06-29
  • C++实现简单的生产者-消费者队列详解
    本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能第一次生成的不一定合适...
    99+
    2023-05-18
    C++实现生产者消费者队列 C++生产者消费者队列 C++队列
  • C++实现一个简单消息队列的示例详解
    目录前言一、如何实现1、接口定义2、用到的对象3、基本流程二、完整代码三、使用示例线程通信总结前言 消息队列在多线程的场景有时会用到,尤其是线程通信跨线程调用的时候,就可以使用消息队...
    99+
    2022-12-15
    C++实现消息队列 C++消息队列
  • Java消息队列的简单实现代码
    今天看到我们的招聘信息有对消息队列有要求,然后就思索了一翻,网上一搜一大堆。我可以举个小例子先说明应用场景假设你的服务器每分钟的处理量为200个,但客户端再峰值的时候可能一分钟会发1000个消息给你,这时候你就可以把他做成队列,然后按正常有...
    99+
    2023-05-31
    java 消息队列 ava
  • C++ EnterCriticalSection简单使用
    目录EnterCriticalSection作用一、首先是它的使用步骤:二、示例代码:EnterCriticalSection作用 用途主要是在多线程中,当开启多线程中,要控制函数...
    99+
    2024-04-02
  • Python实现简单多线程任务队列
    最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题。梯度下降算法的代码如下(伪代码): def gradient_descent(): # the gradient descent...
    99+
    2022-06-04
    队列 多线程 简单
  • 怎么使用PHP和数据库实现一个简单的队列系统
    本篇内容介绍了“怎么使用PHP和数据库实现一个简单的队列系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、数据库队列的基本原理数据库队列...
    99+
    2023-07-06
  • C++超细致讲解队列queue的使用
    目录queue介绍queue常用函数1.常用函数2.函数运用示例queue介绍 只能访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,...
    99+
    2024-04-02
  • C++ STL 序列式容器与配接器的简单使用
    目录容器概述序列式容器 array vector list deque forward_list Adapter(配接器) stack queue priority_queue 容器...
    99+
    2024-04-02
  • C++ map的简单使用实现
    map和set的底层都是通过红黑树来实现的,但并不是原生态的红黑树,而是经过改造后的红黑树。且容器都会在各自的类中添加一些独特的函数来解决各自适配的问题 map和set底层是改造后的...
    99+
    2024-04-02
  • C语言简明讲解队列的实现方法
    目录前言队列的表示和实现队列的概念及结构代码实现束语前言 大家好啊,我又双叒叕来水博客了,道路是曲折的,前途是光明的,事物是呈螺旋式上升的,事物最终的发展结果还是我们多多少少能够决定...
    99+
    2024-04-02
  • 【Python】rq队列的使用
    1. 什么是Job?Job直译过来就是工作,可以是任意的Python函数,你可以把你想要异步执行的任务都写成Job函数。简而言之,Job就是你想执行的操作。例如,我想统计任意网页的字符数量,可以写一个这样的Job函数:import requ...
    99+
    2023-06-02
  • C#集合之队列的用法
    队列是其元素按照先进先出(FIFO)的方式来处理的集合。队列使用System.Collections.Generic名称空间中的泛型类Queue<T>实现。在内部,Que...
    99+
    2024-04-02
  • c++队列的用法有哪些
    C++中队列的用法有以下几种: 声明队列:使用std::queue模板类声明队列对象。 #include <queue&g...
    99+
    2024-02-29
    c++
  • Java 单向队列及环形队列的实现原理
    目录队列的特点图解实现过程:优化解决——环形队列实现思路环形队列各步骤及各方法实现讲解最后:队列的特点 1.可以使用数组和链表两种方式来实现。 2.遵循先入先出(FIFO)的规则,即...
    99+
    2024-04-02
  • C# Chart 简单使用教程
    Chart控件可以用来绘制波形图、柱状图、饼图、折线图等,用来进行数据表现是很不错的,现在简单说一下这个控件的使用方法 XAML: <Window x:Class="WpfA...
    99+
    2022-11-21
    C# Chart使用 C# Chart
  • C++ move()函数及priority_queue队列使用记录
    目录简介1.move函数右值引用 2.priority_queue队列简介 priority_queue 是一个拥有权值观念的 queue,它允许加入新的元素、移除旧的元素...
    99+
    2023-01-10
    C++ move()函数 C++ priority_queue队列
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作