Loading

栈是一种先进后出的数据结构。

栈有两种实现方法,一种是数组,另外一种是 STL 容器。

  • 数组:
int top, stk[N];

stk[++top] = x;  // 入栈

top--;  // 弹栈

int k = stk[top];  // 取栈顶

top = 0;  // 清空栈
  • STL:
stack<int> stk;

stk.push(x);  // 入栈

stk.pop();  // 弹栈,此时栈不为空

int k = stk.top();  // 取栈顶,此时栈不为空

单调栈

单调栈,顾名思义,是栈内元素满足单调性的栈。

插入

假设我们现在的栈是这样的:

假设我们现在要把 \(14\) 压入栈中,那么就是这样的:

也就是说,我们将栈中那些比 \(14\) 小的元素都弹掉了。

实现就是这样的:

while (top && stk[top] < a[i]) top--;
stk[++top] = a[i];

使用

自然就是从栈顶读出来一个元素,该元素满足单调性的某一端。

例如举例中取出的即栈中的最小值。

posted @ 2025-05-04 10:17  Yan719  阅读(19)  评论(0)    收藏  举报