C# 队列(Queue)和 堆栈(Stack)

C# 队列(Queue)

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队

Queue 类的方法和属性

下表列出了 Queue 类的一些常用的 属性

属性 描述
Count 获取 Queue 中包含的元素个数。

下表列出了 Queue 类的一些常用的 方法

序号 方法名 & 描述
1 public virtual void Clear(); 
从 Queue 中移除所有的元素。
2 public virtual bool Contains( object obj ); 
判断某个元素是否在 Queue 中。
3 public virtual object Dequeue();
移除并返回在 Queue 的开头的对象。
4 public virtual void Enqueue( object obj ); 
向 Queue 的末尾添加一个对象。
5 public virtual object[] ToArray();
复制 Queue 到一个新的数组中。
6 public virtual void TrimToSize();
设置容量为 Queue 中元素的实际个数。

实例

下面的实例演示了队列(Queue)的使用:

 1 using System;
2 using System.Collections;
3
4 namespace CollectionsApplication
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 Queue q = new Queue();
11
12 q.Enqueue('A');
13 q.Enqueue('M');
14 q.Enqueue('G');
15 q.Enqueue('W');
16
17 Console.WriteLine("Current queue: ");
18 foreach (char c in q)
19 Console.Write(c + " ");
20 Console.WriteLine();
21 q.Enqueue('V');
22 q.Enqueue('H');
23 Console.WriteLine("Current queue: ");
24 foreach (char c in q)
25 Console.Write(c + " ");
26 Console.WriteLine();
27 Console.WriteLine("Removing some values ");
28 char ch = (char)q.Dequeue();
29 Console.WriteLine("The removed value: {0}", ch);
30 ch = (char)q.Dequeue();
31 Console.WriteLine("The removed value: {0}", ch);
32 Console.ReadKey();
33 }
34 }
35 }

当上面的代码被编译和执行时,它会产生下列结果:

Current queue:
A M G W
Current queue:
A M G W V H
Removing values
The removed value: A
The removed value: M

C# 堆栈(Stack)

堆栈(Stack)代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。

Stack 类的方法和属性

下表列出了 Stack 类的一些常用的 属性

属性 描述
Count 获取 Stack 中包含的元素个数。

下表列出了 Stack 类的一些常用的 方法

序号 方法名 & 描述
1 public virtual void Clear(); 
从 Stack 中移除所有的元素。
2 public virtual bool Contains( object obj ); 
判断某个元素是否在 Stack 中。
3 public virtual object Peek();
返回在 Stack 的顶部的对象,但不移除它。
4 public virtual object Pop();
移除并返回在 Stack 的顶部的对象。
5 public virtual void Push( object obj );
向 Stack 的顶部添加一个对象。
6 public virtual object[] ToArray();
复制 Stack 到一个新的数组中。

实例

下面的实例演示了堆栈(Stack)的使用:

 1 using System;
2 using System.Collections;
3
4 namespace CollectionsApplication
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 Stack st = new Stack();
11
12 st.Push('A');
13 st.Push('M');
14 st.Push('G');
15 st.Push('W');
16
17 Console.WriteLine("Current stack: ");
18 foreach (char c in st)
19 {
20 Console.Write(c + " ");
21 }
22 Console.WriteLine();
23
24 st.Push('V');
25 st.Push('H');
26 Console.WriteLine("The next poppable value in stack: {0}",
27 st.Peek());
28 Console.WriteLine("Current stack: ");
29 foreach (char c in st)
30 {
31 Console.Write(c + " ");
32 }
33 Console.WriteLine();
34
35 Console.WriteLine("Removing values ");
36 st.Pop();
37 st.Pop();
38 st.Pop();
39
40 Console.WriteLine("Current stack: ");
41 foreach (char c in st)
42 {
43 Console.Write(c + " ");
44 }
45 }
46 }
47 }

当上面的代码被编译和执行时,它会产生下列结果:

Current stack:
W G M A
The next poppable value in stack: H
Current stack:
H V W G M A
Removing values
Current stack:
G M A

C# 队列(Queue)和 堆栈(Stack)的更多相关文章

  1. C# 队列(Queue) 和堆栈(Stack)

    队列 (Queue)                                                                                          ...

  2. [数据结构]——链表(list)、队列(queue)和栈(stack)

    在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...

  3. c++中队列queue和栈stack的基本操作

    1.queue 模板类的定义在<queue>头文件中. 定义queue 对象的示例代码如下:queue<int> q1;queue<double> q2; queu ...

  4. python基本数据结构栈stack和队列queue

    1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...

  5. STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较

    栈stack  .队列queue  和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...

  6. C++栈(stack)、队列(queue)、链表(list)的常用函数

    C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构.1.back() 返回一个引用,指向最后一个元素2.empty() 如果队列空则返回真3.front() 返回第一 ...

  7. [转载]队列queue和双端Dequeue

    转载自:http://uule.iteye.com/blog/2095650?utm_source=tuicool 注意:这都只是接口而已 1.Queue API 在java5中新增加了java.ut ...

  8. 链表LinkedList、堆栈Stack、集合Set

    链表LinkedList LinkedList 也像 ArrayList 一样实现了基本的 List 接口,但它在 List 中间执行插入和删除操作时比 ArrayList 更高效.然而,它在随机访问 ...

  9. java09 队列Queue与Deque

    队列Queue与Deque. Enumeration Hashtable与Hashtable子类Properties(资源配置文件) 引用类型(强.软.弱.虚)与WeakHashMap Identit ...

  10. 队列Queue和栈

    1.队列Queue是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式,只能从线性表的一段添加(offer)元素, 从另一段取出(poll)元素,队列遵循先进先出的原则. 2.J ...

随机推荐

  1. LeetCode 867 Transpose Matrix 解题报告

    题目要求 Given a matrix A, return the transpose of A. The transpose of a matrix is the matrix flipped ov ...

  2. mongo 的简单查询语法

    小白的我对MONGO的一些语句搜集用于区别mysql及一些小常识 pymongo 语法按照id进行倒序操作db.news.find().limit(20).sort([("_id" ...

  3. pandas网页操作基础

    ipython notebook 命令行输入ipython notebook 此时,浏览器会自动运行并打开ipython网页 基本操作 如上图所示,新建一个项目 导入相关模块,建立一个数据集 制造数据 ...

  4. Tacacs+认证详细调研

    1 .TACACS+概述 1.1   什么是TACACS+ TACACS+(Terminal Access Controller Access Control System,终端访问控制器控制系统协议 ...

  5. SpringBoot-@async异步执行方法

    启动加上@EnableAsync ,需要执行异步方法上加入  @Async 在方法上加上@Async之后 底层使用多线程技术 演示代码: @RestController @Slf4j public c ...

  6. Linux中程序开机自启

    Linux中程序开机自启 https://www.itbulu.com/debian-ubuntu-rclocal.html

  7. 20181226 PL/SQL批量生产处理语句

    总有那么些时候,对某些特定条件的数据需要做更新或者修改,或者Truncate特定的一些表,而你又不想要每一个表都去写Truncate table 语句. 那么可以采用Select 的拼接语句 如下: ...

  8. 导出Excel(导出一个模版)

    有时,客户需要一个标准的模板来填东西,然后在导入 这时可以弄好excel模板,供导出 /** * 导出excel模板文件 * @param request * @param response * @r ...

  9. vue-自定义pc端键盘-动画

    <template> <div class="keyboard"> <div class="keyboard_key"> & ...

  10. vue-router路由管理器

    安装vue-router npm install vue-router 在main.js中引入 import VueRouter from 'vue-router' Vue.use(VueRouter ...