数据结构:数组模拟栈

2023-11-07

实现一个栈,栈初始为空,支持四种操作:

  1. push x – 向栈顶插入一个数 x;
  2. pop – 从栈顶弹出一个数;
  3. empty – 判断栈是否为空;
  4. query – 查询栈顶元素。
/*
  用数组模拟栈
  
  栈:先进后出
*/

#include <iostream>


using namespace std;

const int N = 1e5 + 10;


// tt:栈顶下标
int stk[N], tt;

// 初始化
void init()
{
    tt = 0;
}

// 插入一个数x
void push(int x)
{
    stk[++tt] = x;   
}

// 从栈顶弹出一个数
void pop()
{
    tt --;
}

// 判断栈是否为空
bool IsEmpty()
{
    // tt = 0 为空
    if(tt) return false;
    return true;
}

// 查询栈顶元素
void query(int &k)
{
    k = stk[tt];
}

int main()
{
    init();
    
    int m;
    cin >> m;
    
    while(m--)
    {
        string op;
        int x, k;
        
        cin >> op;
        
        if(op == "push")
        {
            cin >> x;
            push(x);
        }
        else if(op == "pop")
        {   
            if(! IsEmpty()) pop();
        }
        else if(op == "empty")
        {
            if(IsEmpty()) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
        else if(op == "query")
        {
            if(! IsEmpty())
            {
            query(k);
            cout << k << endl;
            }
        }
    }
    
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构:数组模拟栈 的相关文章

  • 模板类包装任意类型/非类型模板类

    假设我有一个模板类base和一个班级wrapper其中包含一个实例化成员base 我想定义班级wrapper这样它依赖于模板参数包 该参数包只是 传递 给实例化成员base 例如 考虑下面的代码 它工作得很好 include
  • C#中如何检测字符串是否为货币

    通常当我需要转换时currency string 如 1200 55 z 或 1 249 到十进制值我这样做 if currencyString Contains z decimal value Decimal Parse dataToCh
  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • CMake - 将预构建库链接到 C# 项目

    我正在使用 CMake 构建 C 库 该库依赖于已构建的库 dll 我似乎无法让图书馆链接到我的图书馆 我尝试过使用target link libraries mylib external lib 我也尝试过暴力破解 reference e
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 如何仅更改 DateTime 的日期部分,同时保留时间部分?

    我在代码中使用了很多 DateTime 我想将这些日期时间更改为我的特定日期并保留 时间 1 2012 02 02 06 00 00 gt 2015 12 12 06 00 00 2 2013 02 02 12 00 00 gt 2015

随机推荐

  • python对字符串中指定字符进行替换

    1 替换指定的所有字符 string replace a b 表示将字符串string中所有字符为a的替换为b 例子 string abcabcabc string string replace a b print string 输出 bb
  • SpringBoot默认Json框架Jackson解析-基础篇

    1 Springboot返回JSON数据的方式 目前SpringBoot提供的Json格式有三种 Jackson 默认 Gson JsonB 我们都可以在springboot自动配置模块spring boot autoconfigure中查
  • (深度/广度优先算法)——遍历邻接表(C语言)

    一 算法代码 采用邻接表表示图的遍历 include
  • 基于同一IP的不同端口访问不同的网站

    目录 创建网站目录 一 ip 端口1的根目录 二 ip 端口2的根目录 编写虚拟主机配置文件 配置完成 实验结果测试 创建网站目录 一 ip 端口1的根目录 这个目录大家可以随意 配置文件里同步即可 mkdir p www port 909
  • 嵌入式系统:中断

    中断 一 查询与中断 1 查询 按照主函数中的语句顺序 顺序执行 1 优点 结构简单 易于理解 2 缺点 无法充分利用CPU资源 2 中断 程序顺序执行 遇到中断使能 跳转执行中断函数 1 优点 充分利用CPU资源 提高效率 易于处理突发事
  • 微信小程序里面如何使用svg图片

    首先准备一段svg代码如下
  • 查找随机数组中的质数个数

    看到这个标题 我们首先要想到几个问题来仔细分析 1 随机数如何生成 2 质数是为何物 下面我们就来一一解决刚刚想到的问题 1 随机数 我们假设想生成1000以内的21个随机数 Dim i As Integer x As Integer Ra
  • 【financial markets】 2. EURIBOR

    1 EURIBOR EURIBOR 全称是 EURO Interbank offered rate 相当于 欧元的LIBOR 与EONIA一样 EURIBOR是无担保的银行间借贷利率 但是有两点很明显的不同 1 EURIBOR的也是取平均数
  • Docker搭建FastDFS

    Docker搭建FastDFS 1 搜索镜像 docker search fastdfs root localhost data docker search fastdfs NAME DESCRIPTION STARS OFFICIAL A
  • java 定时任务之一 @Scheduled注解(第一种方法)

    本文仅供参考 使用spring Scheduled注解执行定时任务 步骤 1 xmlns 添加 http www springframework org schema task http www springframework org sc
  • CentOS下postgres怎么恢复数据库.bak文件_Xtrabackup 实现数据的备份与恢复

    Xtrabackup介绍 Xtrabackup是由percona开源的免费数据库热备份软件 它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份 对于MyISAM的备份同样需要加表锁 mysqldump备份方式是采用的逻辑备份
  • 加密SO文件中自定义的section

    加密SO文件中自定义的section 作者 0n1y3nd丶 分类 Android 发布时间 2014 08 29 18 22 61条评论 前言 加密已知so文件中的某一section 在运行时解密 执行里面的代码 0 1 libsyc s
  • vim q:适合更多操作的命令行窗口。

    最简单的命令行窗口 输入命令 但是 如果想复制内容到命令行窗口 怎么办 有一种方法 在正常模式下 输入 q 就打开了命令行窗口 命令行窗口中都是我们输入过的命令 在这个窗口中我们可以像编辑正文一样编辑新的命令 或修改旧的命令 因为像编辑普通
  • ChatGPT常见错误解决和封号情形说明

    1 ChatGPT国内能用吗 答 ChatGPT官网国内IP不能 包括港澳台 最好用美国IP 所以需要魔法才能访问官网 这块内容懂得都懂 不敢写教程 只能各位自行搞定 搞不定还是老实用国内的 2 登录遇到ChatGPT高峰期 解决办法 遇到
  • 深度学习-无监督学习(2)

    一 简介 接续上一节我们对无监督学习的介绍 接下来我们将对其中的两大模块展开介绍 在介绍之前会对流行数据让大家有一定的了解 二 无监督学习 数据流形 流形学习的目标是在保持特征特性的同时 将原来位于高维空间中的数据嵌入到低维空间中 这是可能
  • gcc 4.9 g++ gfortran 安装

    Linux编译安装GCC 4 9 0 有需要的朋友可以参考下 Linux下编写C C 程序自然缺不了一个优秀的编译器 Linux下比较常见的自然是GCC了 最近GCC也出到了4 9 0版本 对于C 11 14也有了更好的支持了 所以 今天我
  • 5.4 龙贝格算法

    为什么有龙贝格算法 龙贝格算法是一种数值积分方法 用于计算定积分的数值近似值 它是基于复合梯形法和复合辛普森法的推广和拓展 可以达到更高的精度 相较于复合梯形法和复合辛普森法 龙贝格算法的收敛速度更快 且误差更小 因此在计算积分时更加精确
  • Restful API注解之@PathVariable和@JsonView详解

    对于restful API的使用可以查看我之前的文章SpringMVC开发restful API查询请求 本文将在restful API的基础上介绍 PathVariable和 JsonView注解的详细使用方式 一 PathVariabl
  • 国王分金币(超详细版)

    描述 国王将金币作为工资 发放给忠诚的骑士 第一天 骑士收到一枚金币 之后两天 第二天和第三天 每天收到两枚金币 之后三天 第四 五 六天 每天收到三枚金币 之后四天 第七 八 九 十天 每天收到四枚金币 这种工资发放模式会一直这样延续下去
  • 数据结构:数组模拟栈

    实现一个栈 栈初始为空 支持四种操作 push x 向栈顶插入一个数 x pop 从栈顶弹出一个数 empty 判断栈是否为空 query 查询栈顶元素 用数组模拟栈 栈 先进后出 include