题目描述
请你实现一个栈。
操作:
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.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
Stackclass stack = new Stackclass(n);
while(sc.hasNextLine()){
String[] arr = sc.nextLine().split(" ");
if(arr[0].equals("push")){
stack.push(Integer.parseInt(arr[1]));
}else if(arr[0].equals("pop")){
stack.pop();
}else{
stack.top();
}
}
}
}
class Stackclass{
int maxSize;//栈的最大容量
int size = 0;//栈中的元素个数
int[] data;//保存栈中的数据
int top = 0;//栈顶指针,永远指向栈顶元素的下一位索引
public Stackclass(int maxSize){//构造函数
this.maxSize = maxSize;
this.data = new int[maxSize];
}
public void push(int num){//将num加入栈
if(this.size == this.maxSize){
System.out.println("error");
}else{
data[top++] = num;//在栈顶指针的位置增加新元素,栈顶指针更新+1
this.size++;//栈中元素个数增加
}
}
public void pop(){//弹出栈顶元素,并输出
if(this.size == 0){
System.out.println("error");
}else{
System.out.println(data[--top]);//栈顶指针更新-1,将栈顶元素输出
this.size--;//栈中元素个数减少
}
}
public void top(){//只输出栈顶元素
if(this.size == 0){
System.out.println("error");
}else{
System.out.println(data[top-1]);
}
}
}
就是一个简单的栈实现,没有什么算法思路,只为练手!