Queue 先进先出队列的操作

1、Queue定义

System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。

2、优点

1、能对集合进行顺序处理(先进先出)。

2、能接受null值,并且允许重复的元素。

3、 Queue的构造器


构造器函数


注释


Queue ()


初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。


Queue (ICollection)


初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。


Queue (Int32)


初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。


Queue (Int32, Single)


初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。

4、Queue的属性


属性名


注释


Count


获取 Queue 中包含的元素数。

5. Queue的方法


方法名


注释


Void Clear()


从 Queue 中移除所有对象。


Bool Contains(object obj)


确定某元素是否在 Queue 中。


Object Clone()


创建 Queue 的浅表副本。


Void CopyTo(Array array,int index)


从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。


Object Dequeue()


移除并返回位于 Queue 开始处的对象。


Void Enqueue(object obj)


将对象添加到 Queue 的结尾处。


Object Peek()


返回位于 Queue 开始处的对象但不将其移除。


Object[]ToArray()


将 Queue 元素复制到新数组。


Void TrimToSize()


将容量设置为 Queue 中元素的实际数目。

6、Queue的使用示例


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

class Program

{

    static void Main(string[] args)

    {

        //创建一个队列

        Queue myQ = new Queue();

        myQ.Enqueue("The");//入队

        myQ.Enqueue("quick");

        myQ.Enqueue("brown");

        myQ.Enqueue("fox");

        myQ.Enqueue(null);//添加null

        myQ.Enqueue("fox");//添加重复的元素

        // 打印队列的数量和值

        Console.WriteLine("myQ");

        Console.WriteLine("\tCount:    {0}", myQ.Count);

        // 打印队列中的所有值

        Console.Write("Queue values:");

        PrintValues(myQ);

        // 打印队列中的第一个元素,并移除

        Console.WriteLine("(Dequeue)\t{0}", myQ.Dequeue());

        // 打印队列中的所有值

        Console.Write("Queue values:");

        PrintValues(myQ);

        // 打印队列中的第一个元素,并移除

        Console.WriteLine("(Dequeue)\t{0}", myQ.Dequeue());

        // 打印队列中的所有值

        Console.Write("Queue values:");

        PrintValues(myQ);

        // 打印队列中的第一个元素

        Console.WriteLine("(Peek)   \t{0}", myQ.Peek());

        // 打印队列中的所有值

        Console.Write("Queue values:");

        PrintValues(myQ);

        Console.ReadLine();

    }

    public static void PrintValues(IEnumerable myCollection)

    {

        foreach (Object obj in myCollection)

            Console.Write("    {0}", obj);

        Console.WriteLine();

    }

}

7.备注

1、Queue 的容量是 Queue 可以保存的元素数。Queue 的默认初始容量为 32。向 Queue 添加元素时,将通过重新分配来根据需要自动增大容量。可通过调用 TrimToSize 来减少容量。等比因子是当需要更大容量时当前容量要乘以的数字。在构造 Queue 时确定增长因子。默认增长因子为 2.0。

2、Queue 能接受空引用作为有效值,并且允许重复的元素。

3、空引用可以作为值添加到 Queue。若要区分空值和 Queue 结尾,请检查 Count 属性或捕捉 Queue 为空时引发的 InvalidOperationException异常。

时间: 2024-10-13 12:10:16

Queue 先进先出队列的操作的相关文章

pyhton中的Queue(队列)

什么是队列? 队列就像是水管子,先进先出,与之相对应的是栈,后进先出. 队列是线程安全的,队列自身有机制可以实现:在同一时刻只有一个线程在对队列进行操作. 存数据,取数据 1 import Queue 2 3 q = Queue.Queue() #调用队列生成对象 4 q.put(1) #存放第一个值到队列 5 q.put(2) #存放第二个值到队列 6 7 8 print 'get frist one:',q.get() #获取队列的第一个值 9 print 'get second on:',

JAVA基础知识(2)--队列的操作

队列是一种线性表,它只允许在该表中的一端插入,在另一端删除. 允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front): 下面用Java的数组进行模拟队列的操作: /**2015-07-26 18:49:08 *用数组元素来演示队列的内部操作 *@author lihaiming *Email:[email protected] */import java.util.Scanner; public class Queue { //属性变量 private int[] a; pri

java数据结构与算法之(Queue)队列设计与实现

[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈设计与实现 java数据结构

使用linkedlist封装简单的先进先出队列

创建一个类Queue代表队列(先进先出),添加add(Object obj) 及get()方法, 并添加main()方法进行验证 思路: 使用LinkedList实现队列,在向LinkedList中添加时,使用addFirst()方法, 在从LinkedLsit中取出时,使用removeLast()方法 1 package com.lch.book3chapter1.exercise4; 2 3 import java.util.LinkedList; 4 5 6 public class Qu

数据结构 队列的操作

队列:一种先进先出的数据结构,一端插入一端删除. 存储方式:分为顺序队列.链式队列 队列顺序存储: 头文件: #pragma once #include<stdlib.h> //顺序队列 struct SQueue{ void *data[1024]; //保存数据的内存 int size; }; typedef void *SeqQueue; #ifdef __cplusplus extern "C"{ #endif //初始化 SeqQueue Init_SeqQueu

js实现队列的操作以及对队列中数字的冒泡排序的可视化

一.理论基础 (1)封装一个对队列操作的构造函数,可以进行进队列,出队列,获得队列长度,返回该队列的数组形式. (2)使用正则表达式对input框中的输入字符进行验证,并获得有效的值 (3)使用setInterval()定时器实现可视化的冒泡排序过程,(因为js中没有sleep()函数),使用两个嵌套if语句控制排序过程,外部if语句表示执行次数,内部if语句进行相邻两个数的比较,每两个相邻数字,通过比较,交换完之后,绘制一次图形,j++,然后通过定时器继续执行函数,当一次的相邻数字比较完之后,

STL - queue(队列)

Queue简介 queue是队列容器,是一种"先进先出"的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如: queue<int> queInt; //一个存放int的queue容器. queue<float> queFloat; //一个存放float的queue容器.

STL系列之三 queue 单向队列

queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据.单向队列中的数据是先进先出(First In First Out,FIFO).在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了.因此实现也是非常方便的.下面就给出单向队列的函数列表和VS2008中单向队列的源代码.单向队列一共6个常用函数(front().back().push().pop().empty().size()),与栈的常用函数较为相似. VS2

STL --&gt; queue单向队列

queue单向队列 queue 模板类的定义在<queue>头文件中.与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. 定义queue 对象的示例代码如下:queue<int> q1;queue<double> q2; queue 的基本操作有: q.push(x)                入队,将x 接到队列的末端.q.pop()