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

可紊 提交于 2020-03-23 01:57:58

    一、队列(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
        }
    }

    运行结果如下:

    二、堆栈(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
        }
    }

    运行结果如下:

 

    参考自:

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!