C++13-STL模板-栈stack
在线练习:
大纲要求
【 3 】算法模板库中的函数:min、max、swap、sort
【 4 】栈 (stack)、队列 (queue)、链表 (list)、
向量(vector)等容器
栈 (stack)
#include <stack>
构造函数:
stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式 stack(const stack &stk); //拷贝构造函数
赋值操作:
stack& operator=(const stack &stk); //重载等号操作符
数据存取:
push(elem); //向栈顶添加元素(注意入栈是push而非push_back pop(); //从栈顶移除第一个元素 top(); //返回栈顶元素
大小操作:
empty(); //判断堆栈是否为空 size(); //返回栈的大小
#include <stack> #include <iostream> using namespace std; //栈容器常用接口 void test01() { //创建栈容器 栈容器必须符合先进后出 stack<int> s; //向栈中添加元素,叫做 压栈 入栈 s.push(10); s.push(20); s.push(30); cout <<"栈的大小为:" << s.size() << endl; while (!s.empty()) { //输出栈顶元素 cout << "栈顶元素为: " << s.top() << endl; //弹出栈顶元素 s.pop(); } cout << "栈的大小为:" << s.size() << endl; } int main() { test01(); system("pause"); return 0; }
#include<iostream> #include<cstring> #include<stack> using namespace std; stack<char> st; int main() { string s; cin>>s; int m=s.length(); for(int i=0;s[i]!='@'&&i<m;i++) { if(st.empty()) //排除可能出现的例如)(ab)(的情形 { if(s[i]==')') { cout<<"NO"; return 0; } } if(s[i]=='(') { st.push('('); } else if(s[i]==')') { st.pop(); } } if(!st.empty()) { cout<<"NO"; } else { cout<<"YES"; } return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int c,tot=0;//tot初始化 while((c=getchar())!='@') { if(c=='(')tot++; else if(c==')')tot--; if(tot==-1)break;//防止误判 } if(tot==0)cout<<"YES";//括号匹配要在正反括号数量相等的前提下 else cout<<"NO"; return 0; }