成都网站优化方式,网站定制开发与模版,可画设计软件下载,wordpress博客主机选择目录
一、概述
二、基本的用法
1.入栈
2.出栈
Pop 方法
Peek 方法
3.判断元素是否存在
4.获取 Stack 的长度
5.遍历 Stack
6.清空容器
7.Stack 泛型类
三、结束 一、概述
栈表示对象的简单后进先出 (LIFO) 非泛型集合。
Stack 和 List 一样是一种储存容器#x…目录
一、概述
二、基本的用法
1.入栈
2.出栈
Pop 方法
Peek 方法
3.判断元素是否存在
4.获取 Stack 的长度
5.遍历 Stack
6.清空容器
7.Stack 泛型类
三、结束 一、概述
栈表示对象的简单后进先出 (LIFO) 非泛型集合。
Stack 和 List 一样是一种储存容器它遵循先进后出的原则能够存储任意类型但并不能获取到指定的位置只能存入和取出取出元素后Stack 内部的元素自动删除。
详细API参考Stack 类 (System.Collections) | Microsoft Learn 二、基本的用法
1.入栈
入栈使用 push 方法这里可以添加任意类型
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);Console.ReadKey();}}
} 2.出栈
出栈常用的方法有两种第一种
Pop 方法
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);var value stack.Pop();Console.WriteLine(value);Console.WriteLine(count: stack.Count);Console.ReadKey();}}
}
运行 这里可以看到最后添加的 4.5 被最先取出来取出来的同时也从 stack 中删除了此时的长度为3 这就是概述中描述的 先进后出 原则听起来有点难以理解其实就是谁最后一个添加进来谁就第一个出去专逮住队伍的最后一个往出扯。 第二种
Peek 方法
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);var value stack.Peek();Console.WriteLine(value);Console.WriteLine(count: stack.Count);Console.ReadKey();}}
}
运行 Peek 可以根据后进先出的原则取出一个元素它并不会像 Pop 方法一样把元素删除但是也只能取一个元素看下面代码重复的获取是没用的要想数据一个个取出来还是得老老实实的用 Pop 方法。
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);var value1 stack.Peek();var value2 stack.Peek();var value3 stack.Peek();Console.WriteLine(value1);Console.WriteLine(value2);Console.WriteLine(value3);Console.ReadKey();}}
}运行 3.判断元素是否存在
使用 Contains 方法可以判断元素是否存在如下代码
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);Console.WriteLine(是否存在 stack.Contains(4.5));Console.ReadKey();}}
}运行 4.获取 Stack 的长度
长度的获取和 List 一样使用 Count 属性
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);Console.WriteLine(长度 stack.Count);Console.ReadKey();}}
}运行 5.遍历 Stack
Stack 可以使用 foreach 遍历并且不会移除元素
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);foreach (var item in stack){Console.WriteLine(item);}Console.WriteLine(长度 stack.Count);Console.ReadKey();}}
}运行 6.清空容器
清除 stack 使用 Clear 方法
using System;
using System.Collections;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stack stack new Stack();stack.Push(a);stack.Push(b);stack.Push(3);stack.Push(4.5);stack.Clear();Console.WriteLine(长度 stack.Count);Console.ReadKey();}}
}
运行 7.Stack 泛型类
Stack 泛型类 和 Stack 的用法其实没有什么不同Stack 泛型类 只是在使用时多了一个约束不能和 Stack 标准形式一样可以添加任意类型到栈中而是使用固定的元素类型
using System;
using System.Collections.Generic;namespace Stack_Test
{internal class Program{static void Main(string[] args){Stackstring stack new Stackstring();//将元素入栈stack.Push(a);stack.Push(b);stack.Push(c);//栈的元素个数int count stack.Count;//是否包含指定的元素bool b stack.Contains(a);//Stack.Peek() 方法返回顶部的对象而不将其从堆栈中移除string name stack.Peek();// Pop 把元素出栈栈中就没有这个元素了string s1 stack.Pop();Console.WriteLine(s1);string s2 stack.Pop();Console.WriteLine(s2);string s3 stack.Pop();Console.WriteLine(s3);Console.ReadKey();}}
}三、结束
最后我们来看看 Stack 有那些特点
先进后出存在装箱拆箱存储任意类型无法使用 for 循环遍历查看元素无法获取指定位置元素只能查看获取栈顶元素。
end