栈stack#includestack定义通过二次封装双端队列(deque)容器实现先进后出的栈数据结构仅维护栈顶(top)支持入栈(push)查询栈顶(top)查询大小(size)操作。常用于“单调栈”“括号匹配”“dfs”“Tarjan求强连通分量”“波兰表达式(计算器)”等算法和数据结构中。常用方法作用用法示例构造stack类型 stkstackint stk;进栈.push(元素)stk.push(1)出栈.pop( )stk.pop( )取栈顶.top( )int astk.top()大小.size( )int astk.size( )判空.empty( )stk.empty( )初始化stackint stk;//创建一个空栈栈不允许列表初始化或填充相同的元素 //但是可以从已有的栈进行拷贝构造 stackint stk2(stk); stack(int) stk3stk2;入栈stk.push(10);//stk[10(top)] stk.push(20);//stk[10,20(top)] stk.push(50);//stk[10,20,50(top)] coutstk.top()endl;//50 stk.pop();//stk[10,20(top)] coutstk.top()endl;//20栈是一种线性结构可以把它看做一种“弱化版”的数组他只能在栈顶进行数据的操作而栈内部的元素都是不可能被访问的取出栈顶元素在c中top( )函数仅仅是取出栈顶元素不会将栈顶元素pop()掉coutstack.top()\n;//50,stk[10,20,50(top)]出栈//弹出栈顶元素注意判断非空 if(stk.size()) stk.pop();//stk[10,20(top)] coutstk.pop()\n;//20,stk[10,20(top)]获取栈大小(元素个数)判空coutstk.size()\n; if(stk.empty())……//栈为空清空栈while(stk.size()) stk.pop();在stack中不允许遍历但是如果我们手写栈或者直接用vector即可实现手写栈用一个top变量表示栈顶下标即可以下标1作为栈底int stk[N],top0; //入栈 stk[top]x; //出栈 top--; //取出栈顶元素 couttop\n //获取大小 couttop\n //判断是否为空 if(top)……//栈非空 //遍历栈 for(int i1;itop;i)…… //甚至可以在单调栈上进行二分