C#队列学习笔记:队列(Queue)和堆栈(Stack)

    一、队列(Queue)

    1.1、概念

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

    1.2、Queue类的属性

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

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

    1.3、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 中元素的实际个数。

    1.4、示例演示

    class Program
    {
        static void Main(string[] args)
        {
            #region 队列
            Queue queue = new Queue();

            queue.Enqueue(A);
            queue.Enqueue(B);
            queue.Enqueue(C);
            queue.Enqueue(D);

            Console.WriteLine("Current queue: ");
            foreach (char item in queue)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            queue.Enqueue(E);
            queue.Enqueue(F);

            Console.WriteLine("Current queue: ");
            foreach (char item in queue)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            Console.WriteLine("Removing some values: ");
            char c = (char)queue.Dequeue();
            Console.WriteLine($"The removed value: {c}");
            c = (char)queue.Dequeue();
            Console.WriteLine($"The removed value: {c}");

            Console.Read();
            #endregion
        }
    }

    运行结果如下:

C#队列学习笔记:队列(Queue)和堆栈(Stack)

    二、堆栈(Stack)

    2.1、概念

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

    2.2、Stack类的属性

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

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

    2.3、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 到一个新的数组中。

    2.4、示例演示

    class Program
    {
        static void Main(string[] args)
        {
            #region 堆栈
            Stack stack = new Stack();

            stack.Push(A);
            stack.Push(B);
            stack.Push(C);
            stack.Push(D);

            Console.WriteLine("Current stack: ");
            foreach (char item in stack)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            stack.Push(E);
            stack.Push(F);

            Console.WriteLine("Current stack: ");
            foreach (char item in stack)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            Console.WriteLine($"The next popable value in stack: {stack.Peek()}");

            Console.WriteLine("Removing some values: ");
            stack.Pop();
            stack.Pop();
            stack.Pop();

            Console.WriteLine("Current stack: ");
            foreach (char item in stack)
            {
                Console.Write(item + " ");
            }

            Console.Read();
            #endregion
        }
    }

    运行结果如下:

C#队列学习笔记:队列(Queue)和堆栈(Stack)

 

    参考自:

    https://www.cnblogs.com/JiYF/p/6281667.html

C#队列学习笔记:队列(Queue)和堆栈(Stack)

上一篇:Windows环境下安装并配置Node.js


下一篇:WPF Trigger