栈(stack容器)使用详解

  • 一、栈的基本概念
    • 1. 栈的基本定义
    • 2.栈的相关概念
    • 3.栈的常用操作
  • 二、栈的操作应用
    • UVA514 铁轨 Rails
      • 题目描述
      • 输入格式
      • 输出格式
      • 题目翻译
      • 题目分析
      • Code

一、栈的基本概念

1. 栈的基本定义

栈(stack)又名堆栈,是一种只允许在同一端进行数据插入和删除操作的特殊线性表。

2.栈的相关概念

  • 栈顶(top):表尾,栈中允许进行数据插入和删除的一端。
  • 栈底(bottom):表头,栈中不允许进行数据操作的一端。
  • 入栈或进栈(push):将数据插入栈顶。
  • 出栈或退栈(pop):将数据取出栈顶并删除。
  • 栈上溢(full):栈内空间已满时,仍进行入栈操作,是一种空间不足的出错状态。
  • 栈下溢(empty):栈内无数据时,仍进行出栈操作,是一种数据不足的出错状态。
  • 空栈:元素个数为零的栈。

3.栈的常用操作

  • stack < Type > s:构造stack容器。
  • s.top():返回栈顶元素。
  • s.size():返回栈的大小。
  • s.empty():判断栈是否为空。
  • s.push(elem):入栈操作,向栈顶插入一个元素。
  • s.pop():出栈操作,取出并删除栈顶元素。

二、栈的操作应用

UVA514 铁轨 Rails

题目链接:UVA514 铁轨 Rails

题目描述

输入格式

输出格式

题目翻译

某城市有一个火车站,铁轨铺设如图。有n节车厢从A方向驶入车站,按进站的顺序编号为1~n。你的任务是判断是否能让他们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出栈顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。
为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每节车厢,一旦从A移入C,就不能返回A了;一旦从C移入B,就不能返回C了。也就是说,在任意时刻,只有两种选择:A到C和C到B。

题目分析

观察发现,对火车进行调度的整个过程实际是在模拟入栈出栈的过程,令A表示下一个进栈元素, T a r g e t B Target_B TargetB​表示下一个预期出栈元素,则存在以下情况:

  1. A= T a r g e t B Target_B TargetB​,则A入栈后应立即出栈,AB均增加一位。
  2. 栈非空且s.top()= T a r g e t B Target_B TargetB​,则栈顶元素出栈,B增加一位。
  3. A<=n,说明仍有元素等待入栈且当前A或栈顶元素并非当前期望元素,则当前A入栈,A增加一位。
  4. 以上情况均不满足,则说明所有元素均已入栈且栈顶元素不为期望元素,则无法满足条件,无解。

Code

#include<cstdio>
#include<stack>//stack为stl特有容器,使用时需引用stack库
using namespace std;
const int MAXN=1000+10;
int n,Target[MAXN];
int main()
{while(~scanf("%d",&n) && n!=0){while(~scanf("%d",&Target[1]) && Target[1]!=0){stack<int>s;int A=1,B=1,ok=1;for(int i=2;i<=n;i++) scanf("%d",&Target[i]);while(B<=n){if(A==Target[B]){A++;B++;}else if(!s.empty() && s.top()==Target[B]){s.pop();B++;}else if(A<=n){s.push(A);A++; }else{ok=0;break;} }printf("%s\n",ok?"Yes":"No");}}return 0;
}

以上就是C++中栈(stack容器)使用详解的全部内容了,如果您认为我的文章对您起到了帮助作用,恳请点赞关注支持一下,您的鼓励就是我前进的最大动力。
我是Horseman:一名正在成长的蒟蒻OIer,算法竞赛系列教程持续更新中,感谢大家的鼓励支持。

数据结构:栈(stack容器)使用详解相关推荐

  1. 【数据结构-栈和队列】详解栈和队列(代码+STL+原理)

    一.栈的应用 栈是一种先进后出(FILO)的数据结构 1.1 栈的操作实现 清空(clear): // 栈的清空操作就是把栈顶top置为-1 void clear(){top=-1; } // 清空栈 ...

  2. 【数据结构】共享栈详解 判断共享栈满条件栈顶指针变化详解记忆方法例题

    摘要:简单易懂,详细地介绍共享栈概念,指针,判断共享栈栈满条件以及记忆方法等 目录 共享栈概念 栈顶指针&变化详解 栈顶指针种类的记忆方法 判断栈满条件 判断栈满条件的记忆方法 例题 解题思路 ...

  3. 栈帧ebp,esp详解

    栈帧%ebp,%esp详解 分类专栏: 汇编 首先应该明白,栈是从高地址向低地址延伸的.每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息.寄存器ebp指向当前的栈帧的底部 ...

  4. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)...

    导语 内容提要 殷人昆编著的<数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)>是清华大学出版社出版的<数据结构(C语言版)>(第2版)的配套教材,对" ...

  5. Java堆和栈的区别/联系详解

    Java堆和栈的区别/联系详解 关于Java中堆栈内存的知识,算是基础知识,和C语言中的指针有一些类似,面试中也经常会被问到,特别是跟Java和C都有关的开发工作. 一.堆栈的联系 在Java中,内存 ...

  6. 数据结构与算法之时间复杂度详解

    数据结构与算法之时间复杂度详解 目录 排序算法的介绍和分类 算法的时间复杂度概念 常见的时间复杂度解析 平均时间复杂度和最坏时间复杂度 空间复杂度介绍 1. 排序算法的介绍和分类 排序算法的介绍 排序 ...

  7. docker 容器 exited_Docker实战006:docker容器使用详解

    Docker容器也是docker的核心成员,是docker镜像的一个运行实例.一个镜像可以创建多个容器,多个容器也可以在同一台机器上运行并与其他容器共享操作系统内核同时将应用程序与系统其它周围环境隔离 ...

  8. Buffer(缓冲/字节容器)详解

    本文来说下Buffer(缓冲/字节容器)详解 文章目录 概述 Buffer API ByteBuf - Netty 字节数据的容器 ByteBuf如何工作 ByteBuf 使用模式 HEAP BUFF ...

  9. docker logs 查看docker容器日志详解

    docker logs 查看docker容器日志详解 通过docker logs命令可以查看容器的日志. 命令格式: $ docker logs [OPTIONS] CONTAINEROptions: ...

  10. 顺序栈基本操作(入栈和出栈)C语言详解

    #include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...

最新文章

  1. 千图成像_「原创」千图成像,用PS给人物制作全图的拼人像
  2. TCL系列 - incr命令
  3. IE这回在css flex中扳回一局?
  4. mysql  基本操作(二)
  5. hdu 1540(线段树单点更新 区间合并)
  6. 蓝桥杯 人物相关性分析 二分
  7. 知道这些性能优化手段,工资起码提升一倍
  8. maya多边形建模怎样做曲面_一名合格的模型师,不得不学习掌握的几种建模方法,你会了吗?...
  9. 汇编语言输出斐波那契数列
  10. C语言 流缓冲 Stream Buffering
  11. 机器学习教程 二.在股票上的回归预测
  12. python中阶乘怎么写程序_Python 阶乘实例
  13. 65W氮化镓Switch底座扩展坞方案
  14. linux设备模型详解
  15. 作为程序员,在挑选 iPad 时我在想什么?
  16. 听歌的时候再也不用各个音乐播放软件来回切换啦!
  17. 什么是对象切片(Object Slicing)?
  18. windows server 2012r2 standar 安装 vc++2015失败
  19. mysqlin会使用索引吗
  20. LabVIEW 将图表数据导出到Excel

热门文章

  1. vue 页面闪烁的问题_vue项目解决路由跳转页面闪烁问题(过度动画)
  2. “找不到符号”或“无法解析符号”错误是什么意思?
  3. 骁龙8gen1和麒麟9000哪个好
  4. scrapy mysql django_scrapy漫画爬虫+django页面展示项目
  5. python编程中除号的使用
  6. 浅析锂电池保护板(BMS)系统设计思路(一)
  7. 以下是某论坛坛主,给予的回复,证实了我的猜测
  8. 又又被报道赴美IPO,跨境电商独角兽Shein价值几何?
  9. pca的最大方差理论解释
  10. 解读至强的小秘密之 Analytics Zoo,打通大数据平台与 AI 应用的直通车