C# Stack堆栈类

堆栈是一种后进先出(LIFO)的数据结构。回顾Queue队列类中的货物管理的例子,队列类将先入仓的货物后出仓,但假如有一些实时性非常强的货物,需要后入仓先出仓.

      1  创建堆栈

为了创建Stack类的实例,需要调用Stack类提供的构造函数。Statck类的构造函数提供了三种重载形式,声明代码如下所示。

//使用默认的初始容量创建Stack类的新实例

public Stack();

//使用从ICollection集合复制的元素来创建Stack类的实例,并具有与集合元素数目相同的初始容量

public Stack(ICollection col);

//通过指定初始容量来创建Stack类的实例

public Stack(int initialCapacity);

下面的代码示范这三种构造函数的使用方法。

//使用默认容量

Stack sack = new Stack();

//使用由string数组中的集合元素初始化堆栈对象

Stack sack1 = new Stack(new string[5] { "堆栈元素一", "堆栈元素二", "堆栈元素三", "堆栈元素四", "堆栈元素五" });

//创建堆栈对象并指定20个元素

Stack sack2 = new Stack(20);

2 元素入栈

为了将元素压入堆栈,可以调用Stack类的Push方法,这个方法的声明如下。

public virtual void Push(object obj)

这个方法需要一个object类型的参数obj,表示要被压入到堆中的对象。下面的代码例示了压入栈的操作。

static void Main(string[] args)

{

    //声明并实例化一个新的Stack类

    Stack sk = new Stack();

    //调用Push方法压入堆栈

    sk.Push("堆栈元素一");

    sk.Push("堆栈元素二");

    sk.Push("堆栈元素三");

    sk.Push("堆栈元素四");

    //在控制台窗口中显示堆栈内容

    DisplayResult(sk);

    Console.ReadLine();

}

//在控制台窗口中显示堆栈内容

static void DisplayResult(Stack sk)

{

    foreach (object s in sk)

    {

        Console.WriteLine(s);

    }

}

3  元素出栈

元素出栈是指:移除Stack顶部的元素,并返回这个元素的引用。可以通过调用Pop方法实现元素出栈。另外Stack还提供了Peek方法,用于获取顶部元素对象,这个方法并不移除顶部元素。这两个方法的声明如下所示。

public virtual object Peek();

public virtual object Pop();

下面将通过示例代码来演示元素出栈的操作。

static void Main(string[] args)

{

    Stack sk = new Stack();

    sk.Push("堆栈元素一");

    sk.Push("堆栈元素二");

    sk.Push("堆栈元素三");

    sk.Push("堆栈元素四");

    //在控制台窗口中显示堆栈内容 

    DisplayResult(sk);

    Console.WriteLine("堆栈顶部的元素是:");

    Console.WriteLine(sk.Peek());

    Console.WriteLine("移除顶部的元素:{0}", sk.Pop());

    Console.WriteLine("当前的堆栈中的元素是:");

    DisplayResult(sk);

    Console.ReadLine();

}

//在控制台窗口中显示堆栈内容

static void DisplayResult(Stack sk)

{

    foreach (object s in sk)

    {

        Console.WriteLine(s);

    }

}

你可能感兴趣的:(C#)