📜  C#|堆栈类(1)

📅  最后修改于: 2023-12-03 14:40:30.121000             🧑  作者: Mango

C# 堆栈类

在 C# 中,堆栈(Stack)是常用的数据结构之一。它是一种先进后出(LIFO)的数据结构,类似于一个元素的垂直堆积。在堆栈中,元素只能在堆栈顶部添加或删除,这使得堆栈具有很高的使用效率。在 C# 中,可以使用堆栈类来创建和操作堆栈。

创建堆栈

使用 C# 堆栈类创建堆栈非常简单,只需定义一个 Stack 对象并初始化即可:

Stack<int> stack = new Stack<int>();

此代码创建了一个空的整型堆栈。

堆栈操作

C# 堆栈类中提供了一些常用的操作,如下:

Push

Push 方法将元素添加到堆栈的顶部:

stack.Push(1);
stack.Push(2);
stack.Push(3);

此代码将三个整数元素添加到堆栈中,它们的顺序是 3, 2, 1。

Pop

Pop 方法将从堆栈顶部删除元素,并返回该元素的值:

int num = stack.Pop();

此代码将从堆栈顶部删除一个元素,并将其值赋给 num 变量。

Peek

Peek 方法仅返回堆栈顶部元素的值,而不删除它:

int top = stack.Peek();

此代码将返回堆栈顶部元素的值。

Count

Count 属性返回堆栈中的元素数量:

int count = stack.Count;

此代码将返回堆栈中元素的数量。

Clear

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 *" 的计算结果。