带 Push 和 Pop 示例的 C# 栈

C# 中的栈是什么?

栈是一种特殊的集合,代表“后进先出”(LIFO)的概念。为了首先理解 LIFO,我们举个例子。想象一堆书,一本放在另一本上面。

对于书而言,后进先出的概念意味着只能从书堆中取走最上面那本书。不可能从中间取走一本书,因为那样会扰乱栈的结构。

因此,在 C# 中,栈的工作方式也一样。元素被添加到栈中,一本一本叠在上面。将元素添加到栈的过程称为推送操作。要从栈中移除元素,也可以移除栈顶元素。此操作称为弹出。

让我们更详细地了解栈集合可用的操作。

栈的声明

栈是使用 Stack 数据类型创建的。关键字“new”用于创建 Stack 对象。然后将对象分配给变量 st。

Stack st = new Stack()

向栈添加元素

push 方法用于将元素添加到栈中。语句的一般语法如下。

Stack.push(element)

从栈中移除元素

pop 方法用于从栈中移除元素。pop 操作将返回栈顶元素。语句的一般语法如下。

 Stack.pop()

Count (计数)

此属性用于获取栈中的项目数。下面是此语句的一般语法。

Stack.Count

包含

此方法用于查看栈中是否存在某个元素。下面是此语句的一般语法。如果元素存在,则语句返回 true,否则返回 false。

Stack.Contains(element)

现在让我们在代码层面看看它的工作原理。以下所有代码都将写入我们的 控制台应用程序。代码将写入我们的 Program.cs 文件。

在下面的程序中,我们将编写代码来查看如何使用上述方法。

示例 1:Stack.Push() 方法

在此示例中,我们将看到

  • 栈是如何创建的。
  • 如何显示栈中的元素,以及如何使用 Count 和 Contains 方法。

Stack in C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the stack " +st.Count);
    Console.WriteLine("Does the stack contain the elements 3 "+st.Contains(3));
    Console.ReadKey();
  }
 }
}

代码解释:

  1. 第一步是声明栈。在这里,我们将“st”声明为一个变量来保存我们栈中的元素。
  2. 接下来,我们向栈添加 3 个元素。每个元素都通过 Push 方法添加。
  3. 由于栈元素不能像 数组列表 那样通过索引位置访问,因此我们需要使用不同的方法来显示栈中的元素。Object (obj) 是一个临时变量,用于保存栈中的每个元素。然后我们使用 foreach 语句遍历栈中的每个元素。对于每个栈元素,值都被赋给 obj 变量。然后我们使用 Console.WriteLine 命令将值显示到控制台。
  4. 我们使用 Count 属性 (st.count) 来获取栈中的项目数。此属性将返回一个数字。然后我们将此值显示到控制台。
  5. 然后我们使用 Contains 方法来查看值 3 是否存在于我们的栈中。这将返回 true 或 false 值。然后我们将此返回值显示到控制台。

如果上述代码输入正确并运行程序,将显示以下输出。

输出

Stack in C#

从输出中,我们可以看到栈中的元素已显示。此外,还显示了 True 值,表示值 3 在栈中定义。

注意:您会注意到,最后推送到栈的元素首先显示。这是栈顶元素。输出中还显示了栈元素的计数。

示例 2:Stack.Pop() 方法

现在让我们看看“删除”功能。我们将查看从栈中删除顶层元素所需的代码。

Stack in C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Stack st = new Stack();
   st.Push(1);
   st.Push(2);
   st.Push(3);
   
   st.Pop();

   foreach (Object obj in st)
   {
    Console.WriteLine(obj);
   }
    Console.ReadKey();
  }
 }
}

代码解释:

  1. 在这里,我们只需调用 pop 方法,该方法用于从栈中移除元素。

如果正确输入上述代码并运行程序,将显示以下输出。

输出

Stack in C#

我们可以看到元素 3 已从栈中移除。

摘要

  • 栈基于后进先出概念。将元素添加到栈的操作称为推送操作。从栈中移除元素的操作称为弹出操作。