stack 栈
其实今天我们主要讲的是搜索,但是留作业不知道怎么就突然全变成栈了。
其实栈和队列没什么区别,只是一个先进先出,一个先进后出。基本操作也是一样的。
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
- size() 返回实际个数
- empty() 判断是否为空
- push(item) 压栈
- top() 返回栈顶元素
- pop() 将栈顶元素删除
- s1.swap(s2) 将两个栈元素交互
- s1 == s1 判断是否相等
手里有几个括号匹配的题,大家过目。
第一个,只有()小括号的简化版
#include<iostream>
#include<vector>
#include<stack>
#include<cstdio>
#include<cstring>
using namespace std;
char a[];
stack <char> st;
int ok = ;
int main()
{
gets(a);
int l;
l = strlen(a);
for(int i = ;i < l;i ++)
{
if(a[i] == '(' || a[i] == ')')
{
if(a[i] == '(')
st.push('(');
else
{
if(st.empty() == )
{
if(st.top() == '(')
st.pop();
else
{
ok = ;
break;
}
}
else
{
ok = ;
break;
}
} }
}
if(ok == && st.empty() == )
{
cout<<"YES"<<endl;
}
else
cout<<"NO"<<endl;
return ;
}
未完待续。。。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int a[] = {},b[] = {};
char s[];
void gsy(int a[])
{
int i;//将括号转换为数字,以比较括号级别
for(i = ;i < strlen(s);i++)
{
if(s[i] == '{') a[i + ] = ;
if(s[i] == '[') a[i + ] = ;
if(s[i] == '(') a[i + ] = ;
if(s[i] == '<') a[i + ] = ;
if(s[i] == '>') a[i + ] = ;
if(s[i] == ')') a[i + ] = ;
if(s[i] == ']') a[i + ] = ;
if(s[i] == '}') a[i + ] = ;
}
}
int main()
{
int i,n,t = ,m,j,k;
cin>>n;
for(i = ;i <= strlen(s);i++)
{
scanf("%s",s);
gsy(a);
for(j = ;j <= strlen(s);j++)
{
if(a[j] <= ) //左括号
if(a[j] >= b[t])
b[++t] = a[j];
else break;
if(a[j] >= )
if(a[j] + b[t] == ) t--;
else t++;
}
if(t == )
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return ;
}
stack 栈的更多相关文章
- java - Stack栈和Heap堆的区别
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储 ...
- stack 栈的实现
今天晚上去「南哪」听了场AI的讲座,除了话筒真心不给力之外,算是对微软这方面的进展有了更多了解,毕竟是半宣传性质的活动吧. 光听这些是没用的,眼下还是打好基础,多尝试学点新技术,拓宽能力和视野比较重要 ...
- Heap(堆)和stack(栈)有的区别是什么。
java的内存分为两类,一类是栈内存,一类是堆内存.栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个 ...
- C#部分---特殊集合:stack栈集合、queue队列集合、哈希表集合。
1.stack栈集合:又名 干草堆集合 栈集合 特点:(1)一个一个赋值 一个一个取值(2)先进后出实例化 初始化 Stack st = new Stack(); //添加元素用push st.Pus ...
- JAVA Stack栈和Heap堆的区别(转)
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: ...
- 容器vector的使用总结 容器stack(栈)
0.头文件:#include<vector>; using namespace std; 1.定义: vector<type> vec; 2.迭代器 vector<typ ...
- Stack栈的三种含义
理解stack栈对于理解程序的执行至关重要.easy混淆的是,这个词事实上有三种含义,适用于不同的场合,必须加以区分. 含义一:数据结构 stack的第一种含义是一组数据的存放方式,特点为LIFO,即 ...
- STL --> stack栈
stack栈 c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO),使用该容器时需要包含#include<stack>头文件: 定义stack对象示例: s ...
- 逻辑运算符、三元运算符、for循环、stack(栈),heap(堆),方法区,静态域
Lesson One 2018-04-17 19:58:39 逻辑运算符(用于逻辑运算,左右两边都是 true 或 false) 逻辑与-& 和 短路与-&& 区别: & ...
- java.util.Stack(栈)的简单使用
import java.util.Stack; import org.junit.Before; import org.junit.Test; /** * Stack(栈)继承了Vector类,底层实 ...
随机推荐
- 如何用java生成随机验证码
1.VerifyCode 类: 1 package com.HRuinger.enity; ImageIO.write(image, " ...
- 显示log里的ansi codecs颜色字符
方法: vim AnsiEsc插件 http://www.vim.org/scripts/script.php?script_id=302 less -r cat和tail命令都可以正常显示,而且ta ...
- WPF在win7运行时报'Initialization of 'System.Windows.Setter' threw an exception.'
写的一个WPF程序,在win10运行好好的,在win7就报'Initialization of 'System.Windows.Setter' threw an exception.' 原来是xaml ...
- C解析config
#cat bb.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include < ...
- webAPP 原生APP 对比
Web App即是一种框架型APP开发模式(HTML5 APP 框架开发模式),该开发具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部份构成,APP应用客户端只需安装应用的框架 ...
- 线索二叉树【C语言】
#include<stdio.h> #include<stdlib.h> typedef char ElemType; typedef enum{Link,Thread} Po ...
- 发现:Click事件也能获取鼠标单击的坐标
按照MSDN的说明以及平时的习惯,我们要获取鼠标单击时的相对坐标,都会使用MouseClick等事件,今天,偶然发现,原来Click事件也可以. /* 惊天地泣鬼神的考古业绩. * 原来Cilck事件 ...
- Django基础配置
安装djangopip install Django==1.11.4进入pythonimport django查看版本号django.get_version()创建项目,在合适位置创建一个目录进入你要 ...
- 【[Offer收割]编程练习赛14 C】可疑的记录
[题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ...
- 【codeforces 514A】Chewbaсca and Number
[题目链接]:http://codeforces.com/contest/514/problem/A [题意] 允许你把每个数字翻转 ->x变成9-x 然后问你能够变成的最小的数字是什么; 不能 ...