栈和队列
栈和队列
此处均为用数组模拟(因为懒)
实际上是因为STL里的栈和队列常数太大 ,不如用数组模拟,而且能做的事也比STL多
栈:
先进后出(可以理解成一个坑
int stk[N],tt;
skt[++tt]=x;//入栈
tt--;//弹出
if(tt==0) return empty;
else return not empty;
skt[tt]//栈顶
队列:先进先出
int q[N],hh=0,tt=-1;
q[++tt]=x;//插入
if(hh<=tt) not empty;
else empty//判断队列是否为空
hh++;//弹出
应用:单调栈,单调队列(滑动窗口)
一定要自己手模拟几遍,增强记忆,充分理解
单调栈:
维持一个栈使得栈中的元素是严格单调上升或单调下降的
队列
此处均为用数组模拟(因为不会)
实际上是因为STL里的栈和队列常数太大 ,不如用数组模拟,而且数组能做的事也比STL多
栈:先进后出(可以理解成一个坑
int stk[N],tt;
skt[++tt]=x;//入栈
tt--;//弹出
if(tt==0) return empty;
else return not empty;
skt[tt]//栈顶
队列:先进先出
int q[N],hh=0,tt=-1;
q[++tt]=x;//插入
if(hh<=tt) not empty;
else empty//判断队列是否为空
hh++;//弹出
应用:单调栈,单调队列(滑动窗口)
一定要自己手模拟几遍,增强记忆,充分理解
单调栈:
维持一个栈使得栈中的元素是严格单调上升或单调下降的