当前位置: 首页> 房产> 家装 > 算法刷题笔记 模拟栈(C++实现)

算法刷题笔记 模拟栈(C++实现)

时间:2025/7/9 23:08:19来源:https://blog.csdn.net/hanmo22357/article/details/140107644 浏览次数:0次

文章目录

    • 题目描述
    • 基本思路
    • 实现代码

题目描述

  • 实现一个栈,栈初始为空,支持四种操作:
    • push x – 向栈顶插入一个数x
    • pop – 从栈顶弹出一个数;
    • empty – 判断栈是否为空;
    • query – 查询栈顶元素。
  • 现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。

输入格式

  • 第一行包含整数M,表示操作次数。
  • 接下来M行,每行包含一个操作命令,操作命令为push xpopemptyquery中的一种。

输出格式

  • 对于每个emptyquery操作都要输出一个查询结果,每个结果占一行。
  • 其中,empty操作的查询结果为YESNOquery操作的查询结果为一个整数,表示栈顶元素的值。

数据范围

  • 1 ≤ M ≤ 100000,
  • 所有操作保证合法。

基本思路

栈的实现思路要远远比链表简单,因为每一个结点的值都不用管,只需要记录栈顶元素即可。同样,本题仍然是使用数组这种数据结构来模拟队列。

实现代码

#include <iostream>
using namespace std;const int N = 1e5 + 10;
int stack[N];
int top = -1;inline void push(void)
{int x;cin >> x;stack[++top] = x;
}inline void pop(void)
{top--;
}inline void empty(void)
{if(top == -1) cout << "YES" << endl;else cout << "NO" << endl;
}inline void query(void)
{cout << stack[top] << endl;
}int main(void)
{int M;cin >> M;for(int i = 0; i < M; ++i){string operation;cin >> operation;if(operation == "push") push();else if(operation == "pop") pop();else if(operation == "empty") empty();else if(operation == "query") query();}return 0;
}
关键字:算法刷题笔记 模拟栈(C++实现)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: