Stack 概述
-
Stack <T>
遵循后进先出的规则存储元素 -
Stack <T>
支持泛型,可以指定存储的元素的类型 -
Stack <T>
不是线程安全的,在多线程环境中需要谨慎使用
一、Stack 的定义
- 定义 Stack
Stack<int> nums = new Stack<int>();
- 定义 Stack 并填充一些元素
Stack<int> nums = new Stack<int>(new int[] { 1, 2, 3, 4, 5 });
二、Stack 元素的基本操作
1、Stack 元素的添加
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
2、Stack 元素的访问
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine(nums.Pop());
Console.WriteLine(nums.Pop());
Console.WriteLine(nums.Pop());
# 输出结果
3
2
1
3、Stack 元素的查看
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine(nums.Peek());
Console.WriteLine(nums.Peek());
Console.WriteLine(nums.Peek());
# 输出结果
3
3
3
三、Stack 元素的遍历
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
foreach (int num in nums)
{
Console.WriteLine(num);
}
# 输出结果
3
2
1
四、Stack 的常用方法
1、Stack 元素的删除
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine("删除元素之前");
Console.WriteLine(nums.Count);
nums.Pop();
Console.WriteLine("删除元素之后");
Console.WriteLine(nums.Count);
# 输出结果
删除元素之前
3
删除元素之后
2
2、Stack 大小的获取
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine(nums.Count);
# 输出结果
3
3、Stack 元素的清空
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine("清空元素之前");
Console.WriteLine(nums.Count);
nums.Clear();
Console.WriteLine("清空元素之后");
Console.WriteLine(nums.Count);
# 输出结果
清空元素之前
3
清空元素之后
0
五、Stack 注意事项
- Pop 方法是对 Stack 元素的访问(删除),它会导致 Stack 的改变,它会返回并移除 Stack 中的最后一个元素
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine("调用 Pop 方法之前");
Console.WriteLine(nums.Count);
int num = nums.Pop();
Console.WriteLine("调用 Pop 方法之前");
Console.WriteLine(nums.Count);
# 输出结果
调用 Pop 方法之前
3
调用 Pop 方法之前
2
- Peek 方法是对 Stack 元素的查看,它不会导致 Stack 的改变,它会返回 Stack 中的最后一个元素,但不会移除该元素
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine("调用 Peek 方法之前");
Console.WriteLine(nums.Count);
int num = nums.Peek();
Console.WriteLine("调用 Peek 方法之前");
Console.WriteLine(nums.Count);
# 输出结果
调用 Peek 方法之前
3
调用 Peek 方法之前
3
- Stack 元素的遍历不会导致 Stack 的改变
Stack<int> nums = new Stack<int>();
nums.Push(1);
nums.Push(2);
nums.Push(3);
Console.WriteLine("Stack 元素的遍历之前");
Console.WriteLine(nums.Count);
foreach (int num in nums) { }
Console.WriteLine("Stack 元素的遍历之后");
Console.WriteLine(nums.Count);
# 输出结果
Stack 元素的遍历之前
3
Stack 元素的遍历之后
3
标签:Console,nums,元素,WriteLine,Push,基本操作,Stack
From: https://blog.csdn.net/weixin_52173250/article/details/143692297