首页 > 编程语言 >4-5-1.C# 数据容器 - Stack(Stack 的定义、Stack 元素的基本操作、Stack 元素的遍历、Stack 的常用方法、Stack 注意事项)

4-5-1.C# 数据容器 - Stack(Stack 的定义、Stack 元素的基本操作、Stack 元素的遍历、Stack 的常用方法、Stack 注意事项)

时间:2024-11-11 18:17:01浏览次数:3  
标签:Console nums 元素 WriteLine Push 基本操作 Stack

Stack 概述

  1. Stack <T> 遵循后进先出的规则存储元素

  2. Stack <T> 支持泛型,可以指定存储的元素的类型

  3. Stack <T> 不是线程安全的,在多线程环境中需要谨慎使用


一、Stack 的定义

  1. 定义 Stack
Stack<int> nums = new Stack<int>();
  1. 定义 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 注意事项

  1. 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
  1. 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
  1. 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

相关文章

  • 4-4-1.C# 数据容器 - Queue(Queue 的定义、Queue 元素的基本操作、Queue 元素的遍历、Q
    Queue概述Queue<T>遵循先进先出的规则存储元素Queue<T>支持泛型,可以指定存储的元素的类型Queue<T>不是线程安全的,在多线程环境中需要谨慎使用一、Queue的定义定义QueueQueue<int>nums=newQueue<int>();定义Queue并填充一些元素Queue<int>nums=......
  • 4-3-1.C# 数据容器 - Dictionary(Dictionary 的定义、Dictionary 元素的基本操作、Dict
    Dictionary概述Dictionary<TKey,TValue>存储的是键值对(Key-Value),通过键(Key)来存储或修改值(Value)Dictionary<TKey,TValue>存储的键值对是无序的Dictionary<TKey,TValue>存储的键是不可重复的Dictionary<TKey,TValue>支持泛型,可以指定存储的键值对的类型D......
  • Hive的基本操作(附详细步骤和相关操作截图)
    Hive3.1.2概述与基本操作1、Hive基本概念1.1 Hive简介Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更近一步说hive就是一个MapReduce客户端。面试题:什么是hive?1、hive是数据仓库建......
  • ELK的ElasticStack安装
    目录传送门前言一、组件概念各组件概念EFKELKELFKELFK+kafka二、下载地址三、window下7.8版本安装单机四、window下7.8版本安装集群五、Linux下7.8版本安装单机1、ES安装2、ES-HEAD安装3、IK中文分词器安装六、Linux下7.8版本安装集群传送门SpringMVC的源码解析(精......
  • 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值+ 239. 滑动窗口最大值+347.前
    今天接着补上周末的栈与队列的part2,下午继续完成今天的任务。150.逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:有效的算符为 '+'、'-'、'*' 和 '/' 。每个......
  • 力扣 第540题 有序数组中的单一元素
    解题思路:        因为解决方案必须满足`O(logn)`的时间复杂度,和`O(1)`的空间复杂度。所以我们首先考虑用二分查找的思想。这个问题的关键是找到我们要找的元素在左边还是右边的判断条件。        要找的元素在左边还是右边的判断条件是什么呢?题......
  • C小题目-输入10个数,要求输出其中值最大的元素和该数是第几个数
    #include<stdio.h>intmax(intx,inty){returnx>y?x:y;};intmain(){inta[10];inti,m,n;for(i=0;i<10;i++){printf("请输入第%d个数:",i);scanf("%d",&a[i]);};for(i=0,m=a[0],n=......
  • 【模板】如何实现链表元素的反转
    反转链表是链表操作中一个经典的问题,也是面试中常见的考题。本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作。我们将使用C++代码演示具体实现,同时分析时间复杂度和空间复杂度。问题定义给定一个单链表,我们需要将链表的节点顺序反转。例如,链表1......
  • Hive的基本操作用法
    一、Hive库操作1.创建数据库createdatabasebigdata32;标准写法:createdatabaseifnotexistsdatabases;(判断是否存在,无论存不存在都不会报错)2.创建数据库和位置createdatabasebigdata32_testlocation'/bigdata32ligang.db';3.修改数据库注意:数据库的其他元数据信......
  • C++STL容器适配器——stack和queue
    目录一.stack介绍及使用1.stack介绍2.stack的使用3.模拟实现stack二.queue的介绍及使用1.queue介绍2.queue的使用3.模拟实现queue三.deque的了解1.deque的介绍2.deque的缺陷四.priority_queue的介绍及使用1.priority_queue介绍2.priority_queue的使用3.模拟实......