当前位置: 移动技术网 > IT编程>开发语言>c# > C#队列学习笔记:队列(Queue)和堆栈(Stack)

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

2020年03月23日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网