原文鏈接:
http://huangyunbin.iteye.com/blog/1354140
package com.zby.test;
public class Stack {
private Object[] stack;
private int size;
private Stack(){
this(10);
}
private Stack(int len) {
stack = new Object[len];
}
public int size() {
return size;
}
//返回棧的容量
public int capacity() {
return stack.length;
}
//實現動態數組
public void ensureCapacity() {
if(size() == capacity()) {
Object[] newStack = new Object[size() * 3 / 2 + 1];
System.arraycopy(stack, 0, newStack, 0, size());
stack = newStack;
}
}
//入棧
public void push(Object o) {
size++;
ensureCapacity();
stack[size - 1] = o;
}
//判空
public boolean isEmpty() {
return size == 0;
}
//出棧
public Object pop() {
if(isEmpty()) {
throw new ArrayIndexOutOfBoundsException("不能爲空");
}
Object o = stack[--size];
stack[size] = null;
return o;
}
public static void main(String[] args) {
Stack stack = new Stack(3);
String[] data = new String[] { "a", "b", "c" };
for (int i = 0; i < data.length; i++) {
stack.push(data[i]);
System.out.println(data[i] + "");
}
System.out.println("***********");
while (!stack.isEmpty()) {
System.out.println(stack.pop() + "");
}
}
}