【唐老狮】C#——Stack

本文详细介绍了C#中的Stack数据结构,包括其先进后出的特点、存储任意类型的能力、装箱拆箱过程,以及Push、Pop、Peek、Contains、Count等主要方法的使用。同时强调了栈无法遍历和访问指定位置元素的限制。

【Stack】
 

本质

特点

先进后出

存在装箱拆箱

存储任意类型

无法遍历查看元素

无法获取指定位置元素

只能查看获取栈顶元素

        Stack是栈存储容器,栈是一种先进后出的数据结构,先存入的数据后获取,后存入的数据先获取。如图

【声明】

需要引用命名空间

### C++ 中 `std::stack` 的 `pop()` 和 `top()` 方法 在 C++ 标准库中,`std::stack` 是一种容器适配器(container adapter),它提供了后进先出(LIFO, Last In First Out)的数据结构。`std::stack` 基于其他标准容器实现,默认情况下基于 `std::deque` 实现[^1]。 #### 删除栈顶元素:`pop()` `pop()` 函数用于移除栈顶的元素。需要注意的是,该函数不会返回被移除的元素值;如果需要获取栈顶元素,则应在此之前调用 `top()` 函数。以下是其行为描述: - **功能**:删除当前位于栈顶的元素。 - **时间复杂度**:O(1),因为仅涉及栈顶的操作。 - **注意事项**:调用前需确保栈不为空,否则可能导致未定义行为。 ```cpp #include <iostream> #include <stack> int main() { std::stack<int> s; s.push(10); s.push(20); // 移除栈顶元素 20 s.pop(); if (!s.empty()) { std::cout << "Top element after pop: " << s.top() << std::endl; // 输出 10 } return 0; } ``` #### 返回栈顶元素:`top()` `top()` 函数用于访问栈顶的元素而不将其移除。此方法允许读取或修改栈顶元素的内容。 - **功能**:返回栈顶元素的引用。 - **时间复杂度**:O(1)。 - **注意事项**:同样,在调用之前必须确认栈非空状态,否则可能引发错误。 ```cpp #include <iostream> #include <stack> int main() { std::stack<int> s; s.push(10); s.push(20); int topElement = s.top(); // 获取栈顶元素 20 std::cout << "Current top element is: " << topElement << std::endl; return 0; } ``` 上述代码展示了如何通过 `push()` 向栈中添加元素,并分别演示了 `pop()` 和 `top()` 的具体应用。 --- #### 关键点总结 - 调用 `pop()` 不会返回任何值,而只是简单地移除栈顶元素。 - 使用 `top()` 可安全地检索栈顶元素,但前提是栈不能为空。 - 如果尝试对空栈执行这些操作,可能会导致运行时异常或其他不可预测的行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值