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

目录

一、涉及到的知识点

1.栈定义

2.Stack类

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

1.创建一个新的Stack实例

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

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

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

三、实例


一、涉及到的知识点

1.栈定义

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

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

2.Stack类

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

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

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

1.创建一个新的Stack实例

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
堆栈为空。*/

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中的死锁问题

什么是死锁&#xff1f; 当多个线程持有不同的资源&#xff0c;并且互相等待对方释放资源时&#xff0c;就会导致死锁的发生。在死锁情况下&#xff0c;各个线程都无法继续向前执行&#xff0c;导致程序无法继续运行。 死锁的四个条件&#xff1f; 互斥条件&#xff1a;线程…

3.6消息队列

实现消息队列实现AB进程对话。 a.A进程发送一句话后&#xff0c;B进程接收到打印。然后B进程发送一句话&#xff0c;A进程接收后打印 b.重复上述步骤。直到AB接收或者发送完quit后&#xff0c;结束AB进程 A: #include <stdio.h> #include <sys/types.h> #inclu…

使用nvidia-ml-py事实监控GPU状态

平时监控GPU状态最常用的是watch配合nvidia-smi指令&#xff0c;但有时可能不仅仅需要监控&#xff0c;还需要记录状态数据&#xff0c;比如GPU的显存变化以及利用率变化等等。本文提供了一个使用nvidia-ml-py包编写的简易Demo&#xff0c;该Demo能够实现简易版的nvidia-smi功能…

C++之获取Windows系统信息

目录 1. 操作系统版本 2. 获取CPU信息 3. 获取内存信息 4. 获取硬盘信息 5.获取网络接口信息 6.获取计算机名称、用户名 在C中&#xff0c;你可以使用Windows API函数来获取Windows系统的各种信息。以下是一些常见的API函数和示例代码&#xff0c;用于获取Windows系统信息…

⁴ 细说IT从业者35岁,真的是职业的转折点吗

IT从业者如何跨过35岁职业门槛是一个很重要的问题。 一 虽然年龄可能会成为一些公司在招聘过程中的考虑因素&#xff0c;但是有一些方法可以帮助你克服这个挑战并继续在IT行业中发展。 首先&#xff0c;持续学习和自我提升非常重要。随着科技的不断发展&#xff0c;IT行业也在不…

STM32使用标准库编写外部时钟控制oled显示计数(proteus仿真)

这节课的结果是在上节课的基础上更改的&#xff1a;电路图为&#xff1a;用一个开关来模拟外部时钟的高低电平的变化。 当然也可以配置一个外部时钟来模拟&#xff0c;也是可以的&#xff1a; 由于这节课的代码是在上节课的基础上有一点修改而来的&#xff0c;所以就只把更改的…

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1&#xff1a;【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程&#xff01;全套200集&#xff01;学不会退出IT界&#xff01; 参考文章2&#xff1a;清华教授大力打造的Python高级核心技术&#xff01;整整100集&#xff0c;强烈建议学习&#xff08;Python3…

Linux系统运维脚本:备份mysql数据库,并删除旧的数据库备份文件(保留最新的数据库备份)

目 录 一、要求 二、解决方案 &#xff08;一&#xff09;解决思路 &#xff08;二&#xff09;方案 三、脚本程序实现 &#xff08;一&#xff09;脚本代码和解释 1、脚本代码 2、代码解释 &#xff08;二&#xff09;脚本验证 1、脚本编辑 2、给予执行权…

什么是GA版本

软件发布版本的GA版本是什么意思&#xff1f; 一般可用性 (GA) 什么是一般可用性&#xff1f; 一般可用性&#xff08;GA&#xff09;是指向公众发布产品。与主要用于测试和用户反馈的限量发行版或测试版不同&#xff0c;当产品达到一般可用性时&#xff0c;就可以通过公司的一…

代码随想录训练营第50天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 题目链接&#xff1a;123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxProfit(int[] prices) {int[][] dp new int[prices.length][5];if(prices.length 1) {return 0;}dp[0][0] 0;dp[0][1…

C++_程序流程结构_跳转语句_break

break 作用 用于跳出选择结构或循环结构 break使用的时机 出现在switch条件语句中&#xff0c;作用是终止case并跳出switch出现在循环语句中&#xff0c;作用是跳出当前的循环语句出现在嵌套循环中&#xff0c;跳出最近的内层循环语句 示例1 示例2 示例3

C语言结构体的大小,结构体内存对齐

1. 结构体的大小 在自己正真了解过之前&#xff0c;一直认为结构体的大小就是结构体内部成员大小的总和。 但当你去尝试打印结构体的大小时&#xff0c;会发现事实并非如此&#xff0c;也不会像你想的那样简单。 #include <stdio.h>struct S1 {char c1;char c2;int i;…

什么原因导致了电视大国的国内市场萎缩1300台?2024最值得购买的随身WiFi

近日&#xff0c;全国人大代表&#xff0c;TCL的创始人兼董事长就提出了一个问题&#xff1a;中国生产了世界上75%的电视机&#xff0c;但是国内市场的销量&#xff0c;在5年内缩水了1300万台&#xff0c;这究竟是为什么呢&#xff1f; 对此网友们纷纷解答&#xff1a; 电视能…

基于51单片机的智能火灾报警系统

基于51单片机的智能火灾报警系统 摘要&#xff1a; 本文提出了一种基于51单片机的智能火灾报警系统。该系统采用烟雾传感器和温度传感器来检测火灾的发生&#xff0c;并通过单片机进行数据处理和报警控制。此外&#xff0c;该系统还具有无线通信功能&#xff0c;可以实时将火灾…

Android开发者值得深入思考的几个问题,看完必懂

程序员的劫 最近&#xff0c;又被程序员年龄的事情刷屏了。37岁被公司优化&#xff0c;找工作几个月都没有很好的归属&#xff0c;所谓的小公司还看不上。等等类似的话题变成了程序员的吐槽固定标题&#xff0c;无论是程序员&#xff0c;还是其他行业人员&#xff0c;都可以就…

Stable Diffusion V3测评

1.引言 3月5号&#xff0c;Stability AI发布了介绍Stable Diffusion V3的研究论文&#xff0c;链接地址&#xff1a;戳我 这是目前他们发布的最先进、功能最强大的图像生成器&#xff0c;与一年多前发布的令人印象深刻的 Stable Diffusion V2.1 相比有了大幅升级。SD3所带来的…

LINUX重定向的原理

1.利用文件描述符规则实现重定向 文件描述的分配规则:最小没有使用的下标会分给最新打开的文件 正常printf打印是在stdin标准输出显示器打印&#xff0c;stdin标准输出显示器的fd是1。 所以只要把显示器文件stdin给关闭&#xff0c;再打开一个文件&#xff0c;这个文件的 fd…

HTML静态网页成品作业(HTML+CSS)——新年春节介绍网页设计制作(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示1、首页2、子页13、子页2 三、代码目录四、网站代码HTML部分代码CSS部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0…

【InternLM 笔记】使用InternStudio 体验书生·浦语2-chat-1.8b随记

书生浦语2-chat-1.8b 介绍 书生浦语-1.8B (InternLM2-1.8B) 是第二代浦语模型系列的18亿参数版本。为了方便用户使用和研究&#xff0c;书生浦语-1.8B (InternLM2-1.8B) 共有三个版本的开源模型&#xff0c;他们分别是&#xff1a; InternLM2-1.8B: 具有高质量和高适应灵活性…

[渗透教程]-025-Suricata多线程入侵检测系统

Suricata多线程入侵检测系统 官网 https://suricata-ids.org/项目地址 https://github.com/OISF/suricata简介 Suricata 是由 OISF(开发信息安全基金会)开发,它也是基于签名,但是集成了创新的技术。该引擎嵌入了一个 HTTP 规范化器和分析器(HTP 库),可提供非常先进的 …