集合
栈
C# Stack
C# Stack
前言
Stack<T>
是一个泛型类,按照“后进先出”(LIFO)的原则排列指定数据类型的元素。例如:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个栈
Stack<string> country = new Stack<string>();
// 向栈中推送 "USA" 和 "India"
country.Push("USA");
country.Push("India");
// 打印栈中的元素
foreach (string item in country)
{
Console.WriteLine(item);
}
}
}
输出
India
USA
在这个例子中,country
是一个 Stack<string>
,包含了字符串元素(”USA” 和 “India”)。接下来,我们将详细了解 Stack<T>
。
作用
Stack<T>
用于存储遵循“后进先出”原则的元素。这意味着最新添加的元素总是最先被访问或移除。这种数据结构非常适合需要逆序处理数据的场景。
使用场景
Stack<T>
适用于以下情况:
- 逆序处理数据:如撤销操作、浏览器历史记录等。
- 表达递归:如解析表达式或实现递归算法。
- 算法实现:如深度优先搜索等需要后进先出的算法。
示例
- 创建 Stack
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建整数类型的栈
Stack<int> stack1 = new Stack<int>();
// 创建字符串类型的栈
Stack<string> stack2 = new Stack<string>();
}
}
- 使用 Push() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个栈并推送两个元素
Stack<string> books = new Stack<string>();
// 向栈中添加两个元素
books.Push("《红楼梦》");
books.Push("《三国演义》");
// 打印栈中的元素
foreach (string item in books)
{
Console.WriteLine(item);
}
}
}
输出
《三国演义》
《红楼梦》
- 使用 Pop() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个栈
Stack<string> fruits = new Stack<string>();
fruits.Push("苹果");
fruits.Push("香蕉");
// 弹出栈顶的元素
Console.WriteLine("弹出元素: " + fruits.Pop());
}
}
输出
弹出元素: 香蕉
- 使用 Peek() 方法
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// 创建一个栈
Stack<string> cities = new Stack<string>();
cities.Push("北京");
cities.Push("上海");
// 返回栈顶的元素
Console.WriteLine("栈顶的元素: " + cities.Peek());
}
}
输出
栈顶的元素: 上海
结语
Stack<T>
提供了一种高效的方式来管理遵循“后进先出”原则的数据集合。通过理解和使用 Stack<T>
,可以在需要逆序处理数据的应用场景中提升代码的效率和可读性。