C# 三十四、Stack(堆栈)

堆栈(Stack):代表了一个后进先出的对象集合。当需要对各项进行后进先出的访问时,则使用堆栈。

在列表中添加一项,称为推入元素,从列表中移除一项时,称为弹出元素。

定义

语法格式:

一:初始化 System.Collections.Stack 类的新实例,该实例为空并且具有默认初始容量。

Stack 标识符 = new Stack();

二:新实例初始化 System.Collections.Stack ,该类为空并具有指定的初始容量或默认的初始容量,则两者中较大。

Stack 标识符 = new Stack(指定的初始容量);

三、新实例初始化 System.Collections.Stack 类,该类包含从指定集合复制的元素并具有相同的初始容量与复制的元素数。

Stack 标识符 = new Stack(被复制元素的源集合);

Stack 类的一些常用的属性

public virtual int Count { get; }

官方摘要:获取 System.Collections.Stack 中包含的元素数。

返回结果:System.Collections.Stack 中包含的元素数。

简单理解:获取 Stack 中包含的元素个数。

代码示例:

Stack stack = new Stack();

Console.WriteLine(stack.Count);

--->
0

Stack 类的一些常用的方法

public virtual void Push(object obj);

官方摘要:在 System.Collections.Stack 的顶部插入一个对象。

参数说明:

  • obj:要推入到 System.Collections.Stack 中的 System.Object。 该值可以为 null。

简单理解:顶部添加值。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

foreach (var item in stack)
{
    Console.WriteLine(item);
}

--->
cc
bb
aa

public virtual void Clear();

官方摘要:从 System.Collections.Stack 中移除所有对象。

简单理解:从 Stack 中移除所有的元素。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");

stack.Clear();

stack.Push("cc");

foreach (var item in stack)
{
    Console.WriteLine(item);
}

--->
cc

public virtual bool Contains(object obj);

官方摘要:确定某元素是否在 System.Collections.Stack 中。

参数说明:

  • obj:要在 System.Collections.Stack 中定位的对象。 该值可以为 null。

返回结果:如果在 System.Collections.Stack 中找到 obj,则为 true;否则为 false。

简单理解:判断某个元素是否在 Stack 中。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

Console.WriteLine(stack.Contains("aa"));

--->
True

public virtual void CopyTo(Array array, int index);

官方摘要:副本 System.Collections.Stack 到现有一维 System.Array, 指定的数组索引处开始。

参数说明:

  • array:一维 System.Array,是从 System.Collections.Stack 复制的元素的目标。 System.Array 必须具有从零开始的索引。
  • index:array 中从零开始的索引,从此处开始复制。

简单理解:将元素复制到一维数组。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

object[] arr = new object[3];

stack.CopyTo(arr,0);

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
cc
bb
aa

public virtual object Peek();

官方摘要:返回System.Collections.Stack 顶部的对象而不删除它。

返回结果:System.Collections.Stack 顶部的对象System.Object

简单理解:获取顶部元素,但不移除它。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

Console.WriteLine(stack.Peek());

foreach (var item in stack)
{
    Console.WriteLine(item);
}

--->
cc
cc
bb
aa

public virtual object Pop();

官方摘要:删除并返回 System.Collections.Stack 顶部的对象。

返回结果:从 System.Collections.Stack 顶部删除的 System.Object。

简单理解:移除并返回在 Stack 的顶部的对象。

代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

Console.WriteLine(stack.Pop());

foreach (var item in stack)
{
    Console.WriteLine(item);
}

--->
cc
bb
aa

public virtual object[] ToArray();

官方摘要:副本 System.Collections.Stack 到新数组。

返回结果:包含System.Collections.Stack的元素副本的新数组。

简单理解:复制 Stack 到一个新的数组中。

 代码示例:

Stack stack = new Stack();

stack.Push("aa");
stack.Push("bb");
stack.Push("cc");

object[] arr = stack.ToArray();

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
cc
bb
aa

猜你喜欢

转载自blog.csdn.net/NCZ9_/article/details/83990737