描述
请你实现一个栈。
操作:
push x:将 加x\x 入栈,保证 x\x 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈
输入描述:
第一行为一个正整数 n\n ,代表操作次数。(1 \leq n \leq 100000)(1≤n≤100000)
接下来的 n\n ,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。
输出描述:
如果操作为push,则不输出任何东西。
如果为另外两种,若栈为空,则输出 "error“
否则按对应操作输出。
示例1
输入:
6
push 1
pop
top
push 2
push 3
pop
输出:
1
error
3
import java.util.*;
class Stack1{
int[] data;
int size =0;
int maxSize;
int top = 0;
public Stack1(int maxSize){
this.maxSize = maxSize;
this.data = new int[maxSize];
}
public void push(int val)
{
if(this.size == this.maxSize){
System.out.println("error");
}else{
data[top++]=val;
this.size++;
}
}
public void top(){
if(this.size == 0){
System.out.println("error");
}else {
System.out.println(data[top-1]);
}
}
public void pop(){
if(this.size == 0){
System.out.println("error");
}else{
System.out.println(data[--top]);
size--;
}
}
}
public class Main{
public static void main(String...args) {
Scanner scan = new Scanner(System.in);
int n = Integer.parseInt(scan.nextLine());
Stack1 s = new Stack1(n);
while(scan.hasNextLine()){
String str = scan.nextLine();
String arr[] = str.split(" ");
if(arr[0].equals("push")){
s.push(Integer.parseInt(arr[1]));
}else if(arr[0].equals("pop")){
s.pop();
}else{
s.top();
}
}
}
}