当前位置: 首页 > news >正文

C#使用Stack<T>类进行堆栈设计

目录

一、涉及到的知识点

1.栈定义

2.Stack类

二、 使用Stack<T>类进行堆栈设计

1.创建一个新的Stack实例

2.然后,可以使用Push方法将元素添加到堆栈中

3.使用Pop方法从栈顶删除一个元素

4.使用Peek方法查看堆栈顶部的元素

三、实例


一、涉及到的知识点

1.栈定义

        栈是一种重要的数据结构。从数据结构的角度看,栈也是线性表,其特殊性在于栈的基本操作是线性表操作的子集,它们是操作受限的线性表,因此可以称为限定性的数据结构。

        栈是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说,表尾端有其特殊含义,称为“栈顶(top)”,相应地,表头端称为“栈底(bottom)”,不含元素的空表称为空栈。栈的修改是按照后进先出的原则进行的。因此栈又称为后进先出(last in first out)的线性表,在实现栈的数据结构时一定要注意这个特点。栈的基本操作除了在栈顶进行插入或删除外,还有栈的初始化,判断是否为空以及取栈顶元素等。

2.Stack<T>

        C#中的堆栈由System.Collections.Generic命名空间中的Stack类定义。Stack类提供了模拟堆栈的属性和方法,例如Push(添加元素到堆栈的顶部)、Pop(从堆栈顶部移除元素)和Peek(查看堆栈顶部的元素)。

二、 使用Stack<T>类进行堆栈设计

        要使用Stack类创建堆栈,首先需要使用以下语法创建一个新的Stack实例:

1.创建一个新的Stack<T>实例

Stack<T> stack = new Stack<T>();
//T是您要在堆栈中存储的元素的类型.
//例如,如果您要在堆栈中存储整数,则可以使用以下代码:
Stack<int> stack = new Stack<int>();

2.然后,可以使用Push方法将元素添加到堆栈中

stack.Push(10);
stack.Push(20);
stack.Push(30);
//这将在堆栈顶部添加三个整数10、20和30。

        要从堆栈中删除元素,可以使用Pop方法,它从堆栈顶部删除一个元素并将其返回。

3.使用Pop方法从栈顶删除一个元素

int item = stack.Pop();
//将从堆栈中删除最后一个添加的元素(30)并将其存储在变量item中。

        要查看堆栈顶部的元素而无需删除它,可以使用Peek方法。

4.使用Peek方法查看堆栈顶部的元素

int item = stack.Peek();
//将返回堆栈顶部的元素(20),但不会将其从堆栈中删除。

        Stack类还提供了其他方法和属性,例如Count属性(返回堆栈中元素的数量)和Clear方法(清除堆栈中的所有元素)。

三、实例

// 使用C#中的Stack类实现堆栈
namespace _133_1
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 创建一个新的整数堆栈Stack<int> stack = new();// 将一些元素添加到堆栈中stack.Push(10);stack.Push(20);stack.Push(30);// 查看堆栈顶部的元素int item2 = stack.Peek();Console.WriteLine("堆栈顶部的元素是: " + item2); // 输出: 堆栈顶部的元素是: 30// 获取堆栈中的元素数量int count = stack.Count;Console.WriteLine("堆栈中的元素数量是: " + count); // 从堆栈中弹出元素并打印它们while (stack.Count > 0){int item1 = stack.Pop();Console.WriteLine(item1);}// 获取堆栈中的元素数量count = stack.Count;Console.WriteLine("堆栈中的元素数量是: " + count); stack.Push(40);stack.Push(50);stack.Push(60);// 获取堆栈中的元素数量count = stack.Count;Console.WriteLine("堆栈中的元素数量是: " + count); // 清除堆栈中的所有元素stack.Clear();// 查看堆栈是否为空if (stack.Count == 0){Console.WriteLine("堆栈为空。");}}}
}
//运行结果:
/*
堆栈顶部的元素是: 30
堆栈中的元素数量是: 3
30
20
10
堆栈中的元素数量是: 0
堆栈中的元素数量是: 3
堆栈为空。*/

相关文章:

  • Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源
  • 【零基础学习04】嵌入式linux驱动中信号量功能基本实现
  • 网工内推 | 国企、上市公司网工、运维,CCNA即可,补贴福利多
  • IP数据报格式
  • 数据结构导航 -- 38篇
  • C语言 指针(5) 数组和指针题解析
  • 基于LSTM实现春联上联对下联
  • 批量提取PDF指定区域内容到 Excel 以及根据PDF里面第一页的标题来批量重命名-附思路和代码实现
  • 【InternLM 笔记】使用InternLM2-chat-1.8b制作时事问答知识库
  • zabbix 7.0编译部署教程
  • leetcode刷题(javaScript)——分治思想(二分查找、快速排序)相关场景题总结
  • 【Linux】-Linux下的软件商店yum工具介绍(linux和windows互传文件仅仅一个拖拽搞定!!!!)
  • Flutter第四弹:Flutter图形渲染性能
  • 银河麒麟V10SP3操作系统-网络时间配置
  • web学习笔记(二十九)jQuery
  • 30天自制操作系统-2
  • Apache的基本使用
  • CSS魔法堂:Absolute Positioning就这个样
  • JAVA多线程机制解析-volatilesynchronized
  • Java深入 - 深入理解Java集合
  • React16时代,该用什么姿势写 React ?
  • react-native 安卓真机环境搭建
  • Shell编程
  • spring cloud gateway 源码解析(4)跨域问题处理
  • SpringBoot几种定时任务的实现方式
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • webgl (原生)基础入门指南【一】
  • Yii源码解读-服务定位器(Service Locator)
  • 来,膜拜下android roadmap,强大的执行力
  • 理解在java “”i=i++;”所发生的事情
  • 区块链共识机制优缺点对比都是什么
  • 人脸识别最新开发经验demo
  • 如何用vue打造一个移动端音乐播放器
  • 算法-插入排序
  • 详解移动APP与web APP的区别
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序开发中的那些坑
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • 昨天1024程序员节,我故意写了个死循环~
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​iOS安全加固方法及实现
  • #、%和$符号在OGNL表达式中经常出现
  • #if #elif #endif
  • #微信小程序(布局、渲染层基础知识)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (6)STL算法之转换
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (多级缓存)缓存同步
  • (二十三)Flask之高频面试点
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot学生选课系统 毕业设计 612555