C#中的队列Queue<T>与堆栈Stack<T>
一、概述:
Queue<T>队列,对象的先进先出集合(“FIFO”)。Stack<T>栈,对象的后进先出集合(”LIFO”)。
Queue<T>、Stack<T>类似于List<T>,但 Queue<T>没有IList<T>,所以不能用索引访问队列。也没有实现ICollection<T>,无Add,Remove等方法。
二、操作
1、入队列:Enqueue()
Queue<string> nums = new Queue<string>(); nums.Enqueue("one"); nums.Enqueue("two"); nums.Enqueue("three");
2、入栈:Push()
Stack<string> nums = new Stack<string>(); nums.Push("one"); nums.Push("two"); nums.Push("three");
3、遍历:队列最先返回最先进的,栈最先返回最后进的元素。
foreach (var num in nums)//队列依次返回,one,two,three ;栈依次返回:three,two,one, { Console.WriteLine(num); }
4、出队列:Dequeue()返回最先进的元素。
Console.WriteLine(nums.Dequeue());//one
5、出栈:Pop()返回最后进的元素。
Console.WriteLine(nums.Pop());//three
6、返回开始处的元素:Peek()
Console.WriteLine(nums.Peek());//two
7、判断是否包含元素:Contains()
Console.WriteLine(nums.Contains("three"));
8、清空队列、栈:Clear()
nums.Clear();
9、队列、栈中元素个数:Count
Console.WriteLine(nums.Count);//0
10、复制到数组:CopyTo()、ToArray()
- CopyTo():把元素从队列复制到一个已有的数组中。
- ToArray():返回一个包含队列元素的新数组。
string[] arr=new string[3]; nums.CopyTo(arr,0); arr= nums.ToArray();
三、示意图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C#实现优先队列和堆排序
目录 优先队列 1.API 2.初级实现 3.堆的定义 二叉堆表示法 4.堆的算法 上浮(由下至上的堆的有序化) 下沉(由上至下的堆的有序化) 改进 堆排序 1.堆的构造 2.下沉排序 先下沉后上浮 优先队列 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序.很多情况下是收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,再处理当前键值最大的元素.这种情况下,需要的数据结构支持两种操作:删除最大的元素和插入元素.这种数据结构类型叫优先队列. 这里,
-
C#队列的简单使用
队列的特性很简答,就是先进先出,一般利用数组来实现. 实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾. 实现队列的关键在于队头指针和队尾指针的设置: 假设初始状态下,队头指针为0,队尾指针为-1,那么两个指针指的位置分别就是队头与队尾.当队尾的下一个是队头时队空,当队尾的下下个是队头时队满. 假设初始状态下,队头队尾指针都为0,那么队尾指针指的是队尾,而队头指针的下一个位置才是队头.当两指针相等时队空,当队尾指针的下一个是队头时队满. 如果我们画个图就会发现,不管怎么
-
C#数据结构之堆栈(Stack)实例详解
本文实例讲述了C#数据结构之堆栈(Stack).分享给大家供大家参考,具体如下: 堆栈(Stack)最明显的特征就是"先进后出",本质上讲堆栈也是一种线性结构,符合线性结构的基本特点:即每个节点有且只有一个前驱节点和一个后续节点. 相对前面学习过的顺序表.链表不同的地方在于:Stack把所有操作限制在"只能在线性结构的某一端"进行,而不能在中间插入或删除元素.下面是示意图: 从示意图中可以看出,堆栈有二种实现方式:基于数组的顺序堆栈实现.类似链表的链式堆栈实现 先抽
-
解析c#在未出现异常情况下查看当前调用堆栈的解决方法
C#查看堆栈通常是在异常处理中,出现异常之后通过异常的堆栈可以很方便的得到出现这个错误的代码调用路径.这个很有用,是否可以在没有异常出现时使用这种方法排查一些非异常错误呢?答案是肯定的.起因:论坛发帖子有几个途径,有可能是新闻系统直接导入的帖子,也有可能是抓取的帖子,还有可能是用户通过正常途径发表.但是这两天出了一个问题,有些帖子的HasImage属性不对.通过几种方法做调试都不能重现问题,没有办法,只有在程序中添加回复的地方添加日志程序来记录堆栈,从而追踪到是哪个途径发帖出现了问题.代码: 复
-
C#使用foreach语句遍历堆栈(Stack)的方法
本文实例讲述了C#使用foreach语句遍历堆栈(Stack)的方法.分享给大家供大家参考.具体如下: using System; using System.Collections; public class StacksW3 { static void Main(string[] args) { Stack a = new Stack(10); int x = 0; a.Push(x); x++; a.Push(x); foreach (int y in a) { Console.WriteL
-
C#集合之队列的用法
队列是其元素按照先进先出(FIFO)的方式来处理的集合.队列使用System.Collections.Generic名称空间中的泛型类Queue<T>实现.在内部,Queue<T>类使用T类型的数组,这类似List<T>(https://www.jb51.net/article/244084.htm)类型.队列实现ICollection和IEnumerable<T>接口,但没有实现ICollection<T>接口,所以ICollection<
-
C#数据类型实现背包、队列和栈
目录 基础编程模型和数据抽象 1. API 1. 背包 2.先进先出队列 3. 下压栈 2.用数组实现 3.链表 1.构造链表 2.在表头插入结点 3.从表头删除结点 4.在表尾插入结点 5.其他位置的插入和删除操作 6. 遍历 4. 用链表实现背包 5. 用链表实现栈 6. 用链表实现队列 7. 总结 基础编程模型和数据抽象 把描述和实现算法所用到的语言特性,软件库和操作系统特性总称为基础编程模型. 编写递归代码注意的点: 1. 递归总有一个最简单的情况 —— 方法的第一条语句总是包含 ret
-
C#中的队列Queue<T>与堆栈Stack<T>
一.概述: Queue<T>队列,对象的先进先出集合(“FIFO”).Stack<T>栈,对象的后进先出集合(”LIFO”). Queue<T>.Stack<T>类似于List<T>,但 Queue<T>没有IList<T>,所以不能用索引访问队列.也没有实现ICollection<T>,无Add,Remove等方法. 二.操作 1.入队列:Enqueue() Queue<string> nums
-
Java中队列Queue和Deque的区别与代码实例
目录 一.Queue和Deque 二.api对比 三.代码实例 1.queue 2.deque 总结 一.Queue和Deque Queue以及Deque都是继承于Collection,Deque是Queue的子接口. Queue是FIFO的单向队列,Deque是双向队列. Queue有一个直接子类PriorityQueue,而Deque中直接子类有两个:LinkedList以及ArrayDeque. PriorityQueue的底层数据结构是数组,而无边界的形容,那么指明了PriorityQu
-
PHP的Laravel框架中使用消息队列queue及异步队列的方法
queue配置 首先说明一下我之前的项目中如何使用queue的. 我们现在的项目都是用的symfony,老一点的项目用的symfony1.4,新一点的项目用的都是symfony2.symfony用起来整体感觉还是很爽的,尤其symfony2,整体上来讲使用了很多java里面框架的设计思想.但是他不支持queue.在symfony,我们使用queue也经历了几个过程.最开始使用张堰同学的httpsqs.这个简单使用,但是存在单点.毕竟我们的项目还是正式对外服务的,所以我们研究了Apache旗下的开
-
JS中的算法与数据结构之队列(Queue)实例详解
本文实例讲述了JS中的算法与数据结构之队列(Queue).分享给大家供大家参考,具体如下: 队列(Queue) 我们之前说到了栈,它是一种比较高效的数据结构,遵循 先入后出(LIFO,last-in-first-out) 的原则.而今天我们要讨论的队列,它也是一种特殊的列表,它与栈不同的是, 队列只能在队尾插入元素,在队首删除元素,就像我们平时排队买票一样~ 队列用于存储按顺序排列的数据,遵循 先进先出(FIFO,First-In-First-Out) 的原则,也是计算机常用的一种数据结构,别用
-
C++中队列queue的用法实例详解
目录 一.定义 一.queue初始化 二.queue常用函数 补充:queue 的基本操作举例如下 总结 一.定义 queue是一种容器转换器模板,调用#include< queue>即可使用队列类. 一.queue初始化 queue<Type, Container> (<数据类型,容器类型>) 初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型 初始化示例 1: queue<int>q1; queue<double>q2; q
-
解析Java中的队列和用LinkedList集合模拟队列的方法
API中对队列的说明: public interface Queue<E> extends Collection<E> 在处理元素前用于保存元素的 collection.除了基本的 Collection 操作外,队列还提供其他的插入.提取和检查操作.每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作).插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的:在大多数实现中,插入操作不会失败. 队列通常(但
-
java实现队列queue数据结构详解
目录 概念 队列中两个主要操作 队列遵循以下条件: 队列的数组实现 总结 概念 队列是一种非原始(特殊)的线性表,是一种先进先出(FIFO)的数据结构.它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. FIFO:first input first output,即先添加的元素,先移除,最后添加的元素,最后移除. 工作方式类似于商场排队结账情形: 数组模拟队列图示: 队列中两个主要操作 插入值操作:insert ——> enqueue(入队) ——>参数是要插
-
ruby线程实现生产者消费者问题示例(队列Queue实现线程同步)
Ruby线程实现经典的生产者消费者问题,用ruby中的Queue类实现线程同步问题. 复制代码 代码如下: require "thread" puts "ProAndCon" queue = Queue.new #用队列Queue实现线程同步 producer = Thread.new do 10.times do |i| sleep rand(i) # 让线程睡眠一段时间 queue << i
-
Java中消息队列任务的平滑关闭详解
前言 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 消息队列应用场景 消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景. 本文主要给大家介绍的是关于Java中消息队列任务平滑关闭的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1.问题背
-
C#队列Queue用法实例分析
本文实例分析了C#队列Queue用法.分享给大家供大家参考.具体分析如下: 队列(Queue)在程序设计中扮演着重要的角色,因为它可以模拟队列的数据操作.例如,排队买票就是一个队列操作,后来的人排在后面,先来的人排在前面,并且买票请求先被处理.为了模拟队列的操作,Queue在ArrayList的基础上加入了以下限制 1.元素采用先入先出机制(FIFO,First In First Out),即先进入队列的元素必须先离开队列.最先进入的元素称为队头元素. 元素只能被添加到队尾(称为入队),不允许在
随机推荐
- javascript实现3D切换焦点图
- 使用Javascript简单实现图片无缝滚动
- php之Smarty模板使用方法示例详解
- mysql删除表中某一字段重复的记录
- PHP实现QQ空间自动回复说说的方法
- 使用DNode实现php和nodejs之间通信的简单实例
- node.js 中间件express-session使用详解
- JavaScript中return用法示例
- C语言运算符的优先级和结合性实例详解
- c++ 完备的运行时类型信息(动态类型信息)
- jQuery中对节点进行操作的相关介绍
- JS实现点击复选框将按钮或文本框变为灰色不可用的方法
- 关于COOKIE个数与大小的问题
- 阿里云基于CentOS用vsftpd搭建FTP服务器
- Android基础控件(EditView、SeekBar等)的使用方法
- 测试php函数的方法
- C++概念重载、覆盖、隐藏的使用说明
- CSS 美化段落文本之首字下沉
- python实现报表自动化详解
- iOS实现百度地图拖拽后更新位置以及反编码