• 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
            }
        }

        运行结果如下:

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

  • 相关阅读:
    C# 函数参数object sender, EventArgs e
    Winform中利用委托实现窗体之间的传值
    Web前端学习笔记——Canvas
    js 删除 按钮所在的行
    box-sizing
    前端中关于HTML标签的属性for的理解
    apply和call的用法总结
    target 确定元素是谁??
    css3过渡和动画
    处理两端极限值的小技巧
  • 原文地址:https://www.cnblogs.com/atomy/p/12548591.html
Copyright © 2020-2023  润新知