C# 堆(Stack)
堆(Stack) 是一种具有
后进先出
性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。
当我们需要对各项进行后进先出的访问时,则使用堆。
当我么在列表中添加一项,称为推入元素 当您从列表中移除一项时,称为弹出元素。
Stack 类的方法和属性
下表列出了 Stack 类的一些常用的 属性:
属性 | 描述 |
---|---|
Count | 获取 Stack 中包含的元素个数。 |
下表列出了 Stack 类的一些常用的 方法 :
方法名 | 描述 |
---|---|
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 到一个新的数组中。 |
堆使用范例
下面的范例演示了堆(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: "); 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()); Console.WriteLine("Current stack: "); foreach (char c in st) { Console.Write(c + " "); } Console.WriteLine(); Console.WriteLine("Removing values "); st.Pop(); st.Pop(); st.Pop(); Console.WriteLine("Current stack: "); foreach (char c in st) { Console.Write(c + " "); } } } }
当上面的代码被编译和执行时,它会产生下列结果:
Current stack: W G M A The next poppable value in stack: H Current stack: H V W G M A Removing values Current stack: G M A