前言:栈是与队列非常类似的另一个容器。只是要使用不同的方法访问栈。最后添加到栈中的元素会最先读取。栈是一个后进先出(LIFO)的容器。

如下图表示一个栈,用Push()方法在栈中添加元素,用Pop()方法获取最近添加的元素

与Queue<T>类相同,Stack<T>类实现了IEnumberable和ICollection接口。下图表示栈集合中一些常用的属性和方法:

在下面的例子中,使用Push()方法把三个元素添加到栈中。在foreach方法中,使用IEnumberable接口迭代所有的元素。栈的枚举器不会删除元素。它只会逐个返回元素。

        static void Main(string[] args)
        {

            var alphabets = new Stack<char>();
            //压栈
            alphabets.Push('a');
            alphabets.Push('b');
            alphabets.Push('c');
            //迭代所有的元素
            foreach (var alphabet in alphabets)
            {
                Console.WriteLine(alphabet);
            }
            Console.ReadKey();
        }

因为元素的读取顺序时从最后一个添加到栈中的元素开始到第一个元素,所以的到如下的结果:

用枚举器读取元素不会改变元素的状态。使用Pop()方法会从栈中读取每个元素,并且删除它们。这样就可以使用while循环迭代集合,检查Count()属性。确定栈中是否还有元素。

 

        static void Main(string[] args)
        {

            var alphabets = new Stack<char>();
            //压栈
            alphabets.Push('a');
            alphabets.Push('b');
            alphabets.Push('c');
            //迭代所有的元素
            foreach (var alphabet in alphabets)
            {
                Console.WriteLine(alphabet);
            }
            Console.WriteLine("第二次输出");
            while (alphabets.Count > 0)
            {
                Console.WriteLine(alphabets.Pop());
            }
            Console.ReadKey();
        }

 

 

结果是两次cba,每次迭代对应一个cba,在第二次之后,栈会变空,因为第二次迭代使用了Pop()方法。

查询栈顶元素Peek()方法

 

            char res = alphabets.Peek();            //c

 


确定某元素是否在Stack<T>中使用Contains()方法

            bool result = alphabets.Contains('a');  //true

 

转载于:https://www.cnblogs.com/MoRanQianXiao/p/7838163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值