avatar

模拟栈

模拟栈

栈是比较简单的,用数组模拟

栈的特点:后进先出

模板

// 几个操作 入栈,出栈,查询栈顶,判断是否为空


// tt表示栈顶
int stk[N], tt = 0;

//1. 入栈
stk[++tt] = x;

//2. 出栈
tt --;

//3. 查询栈顶
stk[tt];

//4. 判断是否为空
if(tt>0){

}

题目

AcWing

  • 828 模拟栈

Ac828 模拟栈

描述

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

(1) “push x” – 向栈顶插入一个数x;

(2) “pop” – 从栈顶弹出一个数;

(3) “empty” – 判断栈是否为空;

(4) “query” – 查询栈顶元素。

现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。

解答
import java.io.*;
public class Main {
static final int N = 100010;
static int[] stk = new int[N];
static int tt = 0;

//入栈
public static void push(int val){
stk[++tt] = val;
}

//出栈
public static void pop(){
tt--;
}

//判断是否为空
public static boolean empty(){
return tt == 0;
}

//查询栈顶
public static int query(){
return stk[tt];
}

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int m = Integer.parseInt(br.readLine());

while(m-->0){
String[] s = br.readLine().split(" ");

if(s[0].equals("push")) {
int val = Integer.parseInt(s[1]);
push(val);
}else if(s[0].equals("pop")) {
pop();
}else if(s[0].equals("query")) {
System.out.println(query());
}else {
if(empty()) {
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
}
}

栈是比较简单的数据结构

stk[tt] ,tt要先

Others

人无完人,何况是小白Chen我呢,文章难免会出现一些错误,若是读者们发现错误,可以评论或者联系我,Chen会尽力改正,给大家更优秀的博文。

文章作者: Chen
文章链接: https://vccyb.gitee.io/myblog/2020/03/24/Algorithm/articleM-13/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 东川
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论