基于数组实现栈
1.栈的常用操作
- push()//增加元素
- pop()//弹出元素
- peek()//显示栈顶元素,不出栈
- empty()//判断栈是否为空
2.基于数组实现栈
import java.util.Arrays;
class DemoStack<T> {
//实现栈的数组
private Object[] stack;
//栈顶元素
private int top;
//初始容量为10
DemoStack() {
stack = new Object[10];
}
//判断是否为空
public boolean isEmpty() {
return top == 0;
}
//返回栈顶元素
public T peek() {
T t = null;
if(top > 0)
t = (T) stack[top - 1];
return t;
}
//入栈
public void push(T t) {
expandCapacity(top + 1);
stack[top] = t;
top++;
}
//出栈
public T pop() {
T t = peek();
if(top > 0) {
stack[top - 1] = null;
top--;
}
return t;
}
//扩大容量
public void expandCapacity(int size) {
int len = stack.length;
if(size > len) {
size = size * 3 / 2 + 1;//扩大50%
stack = Arrays.copyOf(stack, size);
}
}
}
用main方法简单测试下:
public static void main(String[] args) {
DemoStack<String> stack = new DemoStack<>();
System.out.println(stack.peek());
System.out.println(stack.isEmpty());
stack.push("Hello");
stack.push("Java");
stack.push("World!");
System.out.println(stack.pop());
System.out.println(stack.isEmpty());
System.out.println(stack.peek());
}