栈就是一个容器,和 List 一样,是在数组的基础上构建的。可以把栈认为是一个有一些特定方法的容器。
栈需要实现的方法
一般而言,栈需要实现如下几个方法:
- push(Integer item),把 item 压入栈
- Integer pop(), 把栈顶端的第一个元素弹出栈,并返回这个元素。
- Integer peek(),查看栈顶端的第一个元素
- Boolean isEmpty(), 判断栈是不是空的
- Boolean isFull(), 判断栈是不是满的
实现栈的代码
注意先加和后减
public class StackX {
private Integer maxSize;
private Integer top;
private Integer[] stackArr;
public StackX(Integer maxSize) {
this.maxSize = maxSize;
stackArr = new Integer[maxSize];
top = -1;
}
public void push(Integer item){
stackArr[++top] = item;
}
// ++top 是先加后赋值;
这种写法也可以被别的方法代替
top = 0;
public void push(Integer item){
stactArr[top++] = item;
}
public Integer pop(){
return stackArr[top--];
}
public Integer peek(){
return stackArr[top];
}
public Boolean isEmpty(){
return top == -1;
}
public Boolean isFull(){
return top == maxSize -1;
}
}
栈的应用
- 单词逆序
思路是压入栈,然后在弹出栈就好了 - 校验成对的括号。
思路是遇到左括号如("(","[","{")就压入栈,遇到右括号就弹出栈,如果这两个能组成一对就是正确的,反之是错误的。
网友评论