带 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 方法。
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(); } } }
代码解释:
- 第一步是声明栈。在这里,我们将“st”声明为一个变量来保存我们栈中的元素。
- 接下来,我们向栈添加 3 个元素。每个元素都通过 Push 方法添加。
- 由于栈元素不能像 数组列表 那样通过索引位置访问,因此我们需要使用不同的方法来显示栈中的元素。Object (obj) 是一个临时变量,用于保存栈中的每个元素。然后我们使用 foreach 语句遍历栈中的每个元素。对于每个栈元素,值都被赋给 obj 变量。然后我们使用 Console.WriteLine 命令将值显示到控制台。
- 我们使用 Count 属性 (st.count) 来获取栈中的项目数。此属性将返回一个数字。然后我们将此值显示到控制台。
- 然后我们使用 Contains 方法来查看值 3 是否存在于我们的栈中。这将返回 true 或 false 值。然后我们将此返回值显示到控制台。
如果上述代码输入正确并运行程序,将显示以下输出。
输出
从输出中,我们可以看到栈中的元素已显示。此外,还显示了 True 值,表示值 3 在栈中定义。
注意:您会注意到,最后推送到栈的元素首先显示。这是栈顶元素。输出中还显示了栈元素的计数。
示例 2:Stack.Pop() 方法
现在让我们看看“删除”功能。我们将查看从栈中删除顶层元素所需的代码。
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(); } } }
代码解释:
- 在这里,我们只需调用 pop 方法,该方法用于从栈中移除元素。
如果正确输入上述代码并运行程序,将显示以下输出。
输出
我们可以看到元素 3 已从栈中移除。
摘要
- 栈基于后进先出概念。将元素添加到栈的操作称为推送操作。从栈中移除元素的操作称为弹出操作。