队列的特性很简答,就是先进先出,一般利用数组来实现。
实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。
实现队列的关键在于队头指针和队尾指针的设置:
假设初始状态下,队头指针为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 fal; rear++;rear=rear%queue.length; queue[rear]=value; return true; } public bool dequeue() { if((rear+1)%queue.length==front) return fal; front++;front=front%queue.length; return true; } public int front() { if(!impty()) return queue[front]; el return -1; } public int rear() { if(!impty()) return queue[rear]; el return -1; } public bool impty() { if((rear+1)%queue.length==front) return true; el return fal; } public bool isfull() { if((rear+2)%queue.length==front) return true; el return fal; }}
实际上c#也有一个队列库,如下图所示
需要注意的是dequeque和toarray的返回类型都是object,可能需要进行强制转换
class program { static void maicba总决赛在哪里打n(string[] args) { queue q = new queue(); q.enqueue('a'); char ch = (char)q.dequeue()高等职业学校; console.writeline("the removed value: {0}", ch); }}
到祝福中秋节的诗词佳句此这篇关于c#队列的简单使用的文章就介绍到这了,更多相关c#队列内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-06 04:28:04,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4e876e8e0218edf88f381586f320e63b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#队列的简单使用.doc
本文 PDF 下载地址:C#队列的简单使用.pdf
留言与评论(共有 0 条评论) |