服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#队列的简单使用

C#队列的简单使用

2023-02-21 16:06ZEKEGU1997 C#

队列的特性很简答,就是先进先出,一般利用数组来实现,本文就介绍了C#队列的简单使用,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

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

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

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

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

C#队列的简单使用

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#也有一个队列库,如下图所示

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#队列内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_43533956/article/details/123510016

延伸 · 阅读

精彩推荐
  • C#C# WPF数据绑定模板化操作的完整步骤

    C# WPF数据绑定模板化操作的完整步骤

    WPF中的数据绑定提供了很强大的功能,与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,下面这篇文章主要给大家介绍了关于C# WPF数据绑定模板化操...

    C#测量小生5252022-12-16
  • C#Unity实现3D贪吃蛇的移动代码

    Unity实现3D贪吃蛇的移动代码

    这篇文章主要为大家详细介绍了Unity实现3D贪吃蛇的移动代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    永远的小白虾11162022-09-02
  • C#unity学习教程之定制脚本模板示例代码

    unity学习教程之定制脚本模板示例代码

    这篇文章主要给大家介绍了关于unity学习教程之定制脚本模板的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    禹泽鹏鹏9972022-03-07
  • C#C#.NET实现网页自动登录的方法

    C#.NET实现网页自动登录的方法

    这篇文章主要介绍了C#.NET实现网页自动登录的方法,以实例形式分析了C#实现点击自动登录的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    清清飞扬11882021-10-28
  • C#C#编程之事务用法

    C#编程之事务用法

    这篇文章主要介绍了C#编程之事务用法,结合实例形式对比分析了C#中事务提交与回滚的具体实现技巧与相关注意事项,具有一定参考借鉴价值,需要的朋友可以...

    mil4022021-11-03
  • C#详解C# Socket异步通信实例

    详解C# Socket异步通信实例

    本篇文章主要介绍了C# Socket异步通信,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    kingmoon8872021-12-14
  • C#C#实现读取被进程占用的文件实现方法

    C#实现读取被进程占用的文件实现方法

    这篇文章主要介绍了C#实现读取被进程占用的文件实现方法,涉及C#进程操作及文件读取的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧4482021-10-22
  • C#C#基于jwt实现分布式登录

    C#基于jwt实现分布式登录

    这篇文章主要介绍了C#基于jwt实现分布式登录的步骤,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    _程序兔6992022-10-31