欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-02-18 12:13:21
一、队列(Queue) 1.1、概念 队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 1.2、Queue类的属性 下表列出了Queue类的一些常用的属性: 属性描述 Count 获取 ......

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