描述
请你实现一个栈。
操作:
push x:将 加x 入栈,保证 x 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈
输入描述:
第一行为一个正整数 n ,代表操作次数。(1≤n≤100000)
接下来的 n ,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。
输出描述:
如果操作为push,则不输出任何东西。
如果为另外两种,若栈为空,则输出 "error“
否则按对应操作输出。
输入:
6
push 1
pop
top
push 2
push 3
pop
输出:
1
error
3
import java.util.*;
//实现一个栈
/**
* csdn:gkkk_1
* email:1098748122@qq.com
* */
public class Main {
public static void main (String [] args) {
Scanner scanner = new Scanner(System.in);
//第一行输入一个正整数n (1<= n <= 100000)
int n = Integer.parseInt(scanner.nextLine());
Stack stack = new Stack();
while (scanner.hasNextLine()) {
String [] str = scanner.nextLine().split(" ");
if (str[0].equals("push")) {
stack.push(Integer.parseInt(str[1]));
} else if (str[0].equals("pop")) {
stack.pop();
} else if (str[0].equals("top")) {
stack.top();
} else {
stack.error();
}
}
}
}
interface Operate {
//将x入栈
void push(int x);
void pop();
void top();
void error();
}
class Stack implements Operate{
//存储栈的数据集合
private ArrayList<Integer> stackList;
public Stack() {
stackList = new ArrayList();
}
@Override
public void push(int x) {
stackList.add(x);
}
@Override
public void pop() {
if(stackList.isEmpty()){
System.out.println("error");
return;
}
int index= stackList.size()-1;
System.out.println(stackList.get(index));
stackList.remove(index);
}
@Override
public void top() {
if(stackList.isEmpty()){
error();
return;
}
System.out.println(stackList.get(stackList.size()-1));
}
@Override
public void error() {
System.out.println("error");
}
}