【C++】栈-基本掌握

默认分类 | 2020-02-06 16:03:06 | 阅读 332 次 | 评论(0)

栈-简介:

栈类型是一种储存值的通用工具,与数组极其相似,唯一不同的就是:栈是单向的,也就是说,栈只对一个方向开放。而且,栈每次只能取出最上面的值,就像一个弹匣,一次出入一个值,接下来我会介绍栈的定义方法以及必须掌握的【1】成员函数。

——————————————————————————————————————————————————

【1】成员函数:被定义在数据类型中,用于操作数据类型的函数

栈-声明:

栈的声明很简单,只需要按照下面的格式就行了:

stack</*数据结构*/>/*栈名*/;

可见栈的关键词(也不是关键词)就是‘stack’不过,在声明栈类之前,必须包含头文件:#include<stack>才能保证不出错。

栈-使用:

栈都定义出来了,可是。。。怎么用呢?只要掌握以下几个成员函数就能明白了:

1.push()/*压入值*/

格式:/*栈名*/.push(/*要压入的元素*/);

例:a.push(6);

2.pop()/*弹出值,记住,一弹就回不来了!*/

格式:/*栈名*/.pop();

例:a.pop();


3.top()/*获取栈顶的值*/

格式:/*栈名*/.top();

例:int x=a.top();

4.size()/*测量栈的长度*/


格式:/*栈名*/.size();

例:int lent=a.size();

5.empty()/*判定栈是否空,若为空,返回true,若为非空,返回false*/

格式:/*栈名*/.empty();

例:bool flag=a.empty();

栈-实战

https://noi.top/questions/1679括号匹配

————————————————————————————————————

题目描述


假设一个表达式S由英文字母(小写)、运算符 (+, -, *, /) 和左右小(圆)括号(n个)构成,以@作为表达式的结束符,请编写一个程序检查表达式中的左右圆括号是否匹配。

  • 若匹配,则返回\mathrm{YES}
  • 否则返回\mathrm{NO}

实战样例


sample input:

2*(x+y)/(1-x)@

sample output:

YES

实战题解:

#include<bits/stdc++.h>
using namespace std;
stack <char> s;
int main(){

    char c;

while(cin>>c){
if(c=='@')break;
if(c=='(')s.push(c);
if(c==')'){
if(s.empty()){cout<<"NO";return 0;}
s.pop();
}
}
  if(s.empty())cout<<"YES";
else{
cout<<"NO";
}
return 0;

}




文章评论,共0条
游客请输入验证码
浏览1650次
文章分类
文章归档
最新评论