【数据结构初学】栈 stack(C++)

栈stack是一种先进先出的数据结构,在很多高级语言中都有它的定义
将3个元素a,b,c一次以1,2,3的顺序压入(push)站内,连续3次弹出(pop)的时候会以c,b,a的顺序弹出
在C++中

stack<int> a;
int num[3];
a.push(1);
a.push(2);
a.push(3);//此时栈a的元素为[ 1, 2, 3]
for(int i = 0;i != 3;i++)
{
       num[i] = a.top();
       a.pop();
}//最后得到的数组num就为[ 3, 2, 1]

看看栈的实际应用
(题目来自https://leetcode-cn.com/explore/learn/card/queue-stack/218/stack-last-in-first-out-data-structure/879/)

这题乍一看好像和栈没有啥关系第一反应是会想到用暴力找值解题

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& T) {
        vector<int> result(T.size(),0);
        for(int i = 0;i != T.size();i++)
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C++顺序的实现示例: ```cpp #include <iostream> using namespace std; const int MAXSIZE = 100; // 定义的最大容量 template <typename T> class SeqStack { private: T data[MAXSIZE]; // 的数据存储数组 int top; // 顶指针 public: SeqStack() { top = -1; } // 构造函数,初始化顶指针为-1 bool Push(T x); // 入操作 bool Pop(T &x); // 出操作 bool GetTop(T &x); // 获取顶元素 bool IsEmpty(); // 判断是否为空 bool IsFull(); // 判断是否已满 }; template <typename T> bool SeqStack<T>::Push(T x) { if (IsFull()) return false; // 已满,无法入 data[++top] = x; // 顶指针加1,将元素x入 return true; } template <typename T> bool SeqStack<T>::Pop(T &x) { if (IsEmpty()) return false; // 为空,无法出 x = data[top--]; // 将顶元素赋值给x,顶指针减1 return true; } template <typename T> bool SeqStack<T>::GetTop(T &x) { if (IsEmpty()) return false; // 为空,无法获取顶元素 x = data[top]; // 将顶元素赋值给x return true; } template <typename T> bool SeqStack<T>::IsEmpty() { return top == -1; // 顶指针为-1,说明为空 } template <typename T> bool SeqStack<T>::IsFull() { return top == MAXSIZE - 1; // 顶指针为MAXSIZE-1,说明已满 } int main() { SeqStack<int> stack1; for (int i = 0; i < 10; i++) stack1.Push(i); int x; while (!stack1.IsEmpty()) { stack1.Pop(x); cout << x << " "; } cout << endl; return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值