栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。
栈的特性:后进先出。
/**
* 自定义栈
*
*/
public class MyStack {
private int[] array;
// 栈容量
private int capacity;
// 栈顶下标
private int top;
public MyStack(int size) {
this.capacity = size;
array = new int[size];
top = -1;
}
// 压入数据
public void push(int value) {
if (top < capacity - 1) {
array[++top] = value;
}
}
// 弹出栈顶数据
public int pop() {
return array[top--];
}
// 访问栈顶数据
public int peek() {
return array[top];
}
// 判断栈是否为空
public boolean isEmpty() {
return (top == -1);
}
// 判断栈是否满了
public boolean isFull() {
return (top == capacity - 1);
}
public static void main(String[] args) {
MyStack stack = new MyStack(3);
System.out.println("isEmpty: " + stack.isEmpty());
stack.push(1);
System.out.println("push: " + 1);
stack.push(2);
System.out.println("push: " + 2);
stack.push(3);
System.out.println("push: " + 3);
System.out.println("isFull: " + stack.isFull());
System.out.println("peek: " + stack.peek());
while (!stack.isEmpty()) {
System.out.println("pop: " + stack.pop());
}
}
}