博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM-栈
阅读量:5846 次
发布时间:2019-06-18

本文共 1484 字,大约阅读时间需要 4 分钟。

ACM- 栈

栈的定义:栈是一种只能在一端进行的插入或删除操作的线性表。表中允许进行插入,删除操作的一端称为栈顶,栈的另一端称为栈底。

栈的特点:后进先出

C++标准库中的基本使用方法:

栈的头文件

#include 

定义栈,以如下形式实现:stack<type> s;其中type为数据类型(如int,fioat,char等)

常用操作有:

s.push(item); //将item压入栈顶s.pop();         //删除栈顶的元素,但不会返回s.top();          //返回栈顶的元素,但不会删除s.size();         //返回栈中元素的个数s.empty();      //检查栈是否为空,如果为空返回true,否则返回false

栈的使用:

杭电1022(栈的使用)

AC代码:#include 
#include
using namespace std;int main(){ int n; char in[100]; char out[100]; int flag[100]; //记录判断进站还是出站的标志 while(cin>>n) { cin>>in; cin>>out; stack
s;//模拟站台的栈 int i=0; //i代表进站序列的对应列车 int j=0; //j代表出站序列的对应列车 for(i;i<=n;) { if(s.empty()) //如果栈为空则处理第一个数据 { s.push(in[i]); flag[i+j] = 0; i++; //第一个数据入栈,计数器加一 } if(!s.empty()&&s.top()!=out[j])//如果栈不空并且不等于当前出站序列中的数字,则必须再将后面的标号入栈 { s.push(in[i]); flag[i+j] = 0; i++; } if(!s.empty()&&s.top()==out[j]) { s.pop(); flag[i+j] = 1; j++; } //如果栈不为空,并且栈顶元素等于当前出站序列中的当前位置,则出栈,并让出站序列向后,开始处理下一个出站序列 } if(s.empty()) //若栈为空,证明全部列车都已经出站,所以题目给出的出站序列有可能实现 { cout<<"Yes."<

 

转载于:https://www.cnblogs.com/jazy/p/8342615.html

你可能感兴趣的文章
nagios监控失败报错It appears as though you do not have..
查看>>
solr 与mysql的对应查询 solr统计
查看>>
我的友情链接
查看>>
oracle 11g RAC 的一些基本概念(三)
查看>>
如何画出一张合格的技术架构图?
查看>>
K8s中Pod健康检查源代码分析
查看>>
全面剖析 Knative Eventing 0.6 版本新特性
查看>>
IPsec ××× (上)
查看>>
OpenGL的视图变换
查看>>
Redis.conf 说明
查看>>
清除缓存
查看>>
vs code和node的相关使用 一一 typescript的配置
查看>>
shell-用grep查看输入的参数是否在/etc/passwd中
查看>>
ansible 启动tomcat遇到的问题
查看>>
我的友情链接
查看>>
搭建LNMP
查看>>
文件类型,文件权限
查看>>
Xamarin.Forms教程开发的Xcode的下载安装
查看>>
js 将json字符串转换为json兑现
查看>>
java读取properties配置文件
查看>>