AB1 【模板】栈
请你实现一个栈。
操作:
- push x:将 加𝑥 入栈,保证 𝑥为 int 型整数。
- pop:输出栈顶,并让栈顶出栈
- top:输出栈顶,栈顶不出栈
思路:通过内部类的方式创建一个栈类,该类有两个主要属性用于存储元素的数组以及指示栈顶元素的指针。其他的结构就参照栈的执行逻辑,因为已经提前知道输入均是合法的,因此没有对输入进行校验。 题目链接,ACM模式
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int number = in.nextInt();
//创建一个栈
Main.Stack stack = new Main.Stack(number);
while (number>=0) {
String operator = in.nextLine();
if(operator.startsWith("pop")) //判断是以什么操作数开始
stack.pop();
if(operator.startsWith("top"))
stack.top();
if(operator.startsWith("push")){
//因为输入是push 数字,我们可以得知,数字位置从5开始
String substring = operator.substring(5);
//将String转换为int类型的数字
int integer = Integer.parseInt(substring);
stack.push(integer);
}
number--;
}
}
static class Stack{
int [] array;
int length = 0; // 始终指向待插入位置
public Stack(int number) {
//已知操作数的次数,设置数组长度与操作数相同,在极端情况下全是push操作也不会出现溢出的问题。
this.array = new int[number];
}
public void push(int number){
this.array[this.length] = number;
this.length++;
}
public void pop(){
if(this.length == 0)
System.out.println("error");
else{
System.out.println(array[length-1]);
this.length--;
}
}
public void top(){
if(this.length == 0)
System.out.println("error");
else{
System.out.println(this.array[this.length-1]);
}
}
}
}