📅  最后修改于: 2023-12-03 14:40:30.121000             🧑  作者: Mango
在 C# 中,堆栈(Stack)是常用的数据结构之一。它是一种先进后出(LIFO)的数据结构,类似于一个元素的垂直堆积。在堆栈中,元素只能在堆栈顶部添加或删除,这使得堆栈具有很高的使用效率。在 C# 中,可以使用堆栈类来创建和操作堆栈。
使用 C# 堆栈类创建堆栈非常简单,只需定义一个 Stack 对象并初始化即可:
Stack<int> stack = new Stack<int>();
此代码创建了一个空的整型堆栈。
C# 堆栈类中提供了一些常用的操作,如下:
Push 方法将元素添加到堆栈的顶部:
stack.Push(1);
stack.Push(2);
stack.Push(3);
此代码将三个整数元素添加到堆栈中,它们的顺序是 3, 2, 1。
Pop 方法将从堆栈顶部删除元素,并返回该元素的值:
int num = stack.Pop();
此代码将从堆栈顶部删除一个元素,并将其值赋给 num 变量。
Peek 方法仅返回堆栈顶部元素的值,而不删除它:
int top = stack.Peek();
此代码将返回堆栈顶部元素的值。
Count 属性返回堆栈中的元素数量:
int count = stack.Count;
此代码将返回堆栈中元素的数量。
Clear 方法清空堆栈中的所有元素:
stack.Clear();
此代码将清空堆栈中的所有元素。
下面是一个使用 C# 堆栈类的简单示例。该示例使用堆栈实现后缀表达式计算:
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
string expr = "2 3 + 4 *";
string[] arr = expr.Split();
Stack<int> stack = new Stack<int>();
foreach (string item in arr)
{
int num;
if (int.TryParse(item, out num))
{
stack.Push(num);
}
else
{
int num2 = stack.Pop();
int num1 = stack.Pop();
switch (item)
{
case "+":
stack.Push(num1 + num2);
break;
case "-":
stack.Push(num1 - num2);
break;
case "*":
stack.Push(num1 * num2);
break;
case "/":
stack.Push(num1 / num2);
break;
}
}
}
Console.WriteLine(stack.Pop());
}
}
此代码将输出计算结果 10,它是后缀表达式 "2 3 + 4 *" 的计算结果。