一、什么是栈
栈是一种数据结构,特点是后进先出(LIFO)
二、实现栈
public class MyStack {
private Object[] oList = null;
private int count = 0;
private int capacity = 0;
public MyStack(int capacity) {
this.capacity = capacity;
oList = new Object[capacity];
}
public void push(Object obj) {
if (isFull()) {
System.out.println("栈已经满了");
} else {
oList[count++] = obj;
}
}
public Object pop() {
if (isEmpty()) {
System.out.println("栈是空的,没有元素弹出");
return null;
} else {
Object obj = oList[--count];
oList[count] = null;
return obj;
}
}
public boolean isFull() {
if (count == capacity) {
return true;
}
return false;
}
public boolean isEmpty() {
if (count == 0) {
return true;
}
return false;
}
}
里面就四个方法,push(),pop(),isFull(),isEmpty()。分别是压栈,出栈,是否栈满,是否栈空。都采用了方法封装。
测试它
public static void main(String[] args) {
MyStack ms = new MyStack(5);
System.out.println(ms.pop());
ms.push(1);
ms.push(2);
ms.push(3);
ms.push(4);
ms.push(5);
ms.push(6);
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
System.out.println(ms.pop());
}
结果为
栈是空的,没有元素弹出
null
栈已经满了
5
4
3
2
1
栈是空的,没有元素弹出
null