栈(Stack)是一个后进先出的对象集合。就像往箩筐里装东西和取东西。


Stack的声明

  声明栈要用关键字Stack。其语法格式与类的声明相同。

    Stack s=new Stack(); //声明s


Stack的属性

  Stack常用的属性有Count,其中:

    Count是获取Stack中的元素个数。

    Stack s=new Stack();

    s.Push(12);           //向s中增加数据.

    s.Push(13);

    int count=s.Count;    //count这时的值为2.


Stack的方法

  当向栈中添加一项,称为推入元素,当向栈中移除一项时,称为弹出元素。因此C#提供给我们的方法如下表:


        public virtual void Clear(); 
        从 Stack 中移除所有的元素。


        public virtual bool Contains( object obj ); 
        判断某个元素是否在 Stack 中。


        public virtual object Peek();
        返回在 Stack 的顶部的对象,但不移除它。


        public virtual object Pop();
        移除并返回在 Stack 的顶部的对象。


        public virtual void Push( object obj );
        向 Stack 的顶部添加一个对象。


        public virtual object[] ToArray();
        复制 Stack 到一个新的数组中。


using System;

using System.Collections;

namespace CollectionsApplication

{

   class Program

   {

       static void Main(string[] args)

       {

           Stack st = new Stack();

 

           st.Push('A');          //存入数据

           st.Push('M');

           st.Push('G');

           st.Push('W');

 

           Console.WriteLine("Current stack: "); // W G M A

           foreach (char c in st)

           {

               Console.Write(c + " ");

           }

           Console.WriteLine();

 

           st.Push('V');

           st.Push('H');

           Console.WriteLine("The next poppable value in stack: {0}", st.Peek());//取出栈顶数据H,但不删除

           Console.WriteLine("Current stack: ");       // H V W G M A    

           foreach (char c in st)

           {

              Console.Write(c + " ");

           }

           Console.WriteLine();

 

           Console.WriteLine("Removing values ");

           st.Pop(); //移除数据

           st.Pop();

           st.Pop();

 

           Console.WriteLine("Current stack: "); //G M A

           foreach (char c in st)

           {

              Console.Write(c + " ");

           }

       }

   }

}