栈是一种数据结构,特点:先进后出
实现:一个一维数组,数组大小maxSize,栈顶指针top,当前栈长度size
import java.util.Scanner;
/**
*
* @describe
* 实现栈 pop push top
* 1 定义一个数组int[]
* 2 数组最大值maxSize
* 3 栈顶指针top
* 4 当前栈的长size
*
* -构造函数 对栈的最大值初始化,并分配内存
* -pop 出栈 top-1
* -push 入栈 top+1
* -top 返回栈顶元素
*
* 根据top值判断是否为空
*
*/
public class StackDemo {
private int[] array;//构造函数中初始化 new
private int maxSize;//最大值在构造函数中初始化
private int top = -1;
private int size = 0;
public void top() {
if(top<0) {
System.out.println("error");
}else {
System.out.println(array[top]);
}
}
public void push(int x) {
array[++top] = x;
size++;
}
public void pop() {
if(top==-1) {
System.out.println("error");
}else {
System.out.println(array[top--]);
size--;
}
}
public StackDemo(int size) {
this.maxSize = size;
this.array = new int[size];
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//出现问题 使用nextInt后 readLine还是当前行
int n = Integer.parseInt(scanner.nextLine());
StackDemo demo = new StackDemo(n);
for(int i=0;i<n;i++) {
// System.out.println(demo.size);
String op = scanner.nextLine();
String[] arr = op.split(" ");
switch(arr[0]){
case "push":
demo.push(Integer.parseInt(arr[1]));
break;
case "pop":
demo.pop();
break;
case "top":
demo.top();
break;
}
}
}