栈
概念很简单,栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构
可以理解为子弹匣,装子弹是一个个压进弹匣,拆子弹则要一个个拆出来,而最先拆出来的是最后压进去的子弹
java示例
package stucture;
import java.util.EmptyStackException;
import java.util.Random;
import java.util.Stack;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by zhangchanglu on 2017/9/5
* email zclsoft@163.com
*/
public class MyStack {
private Object elements[];
AtomicInteger index = new AtomicInteger(0);
public MyStack(int size) {
this.elements = new Object[size];
}
/**
* 入栈
*
* @param t 元素
* @return 元素
*/
public T push(T t) {
int nIndex = index.getAndIncrement();
if (nIndex >= elements.length) {
throw new ArrayIndexOutOfBoundsException();
}
elements[nIndex] = t;
return t;
}
/**
* 出栈
*
* @return 出栈元素
*/
public T pop() {
int nIndex = index.decrementAndGet();
if (nIndex < 0) {
throw new EmptyStackException();
}
return (T) elements[nIndex];
}
public static void main(String[] args) {
MyStack<String> stack = new MyStack<>(50);
for (int i = 10; i < 60; i++) {
stack.push(" 子弹"+i+" ");
}
System.out.println("|--子弹匣--|");
System.out.println("|__________|");
for (int i = 10; i < 60; i++) {
System.out.println("|"+stack.pop()+"|");
}
System.out.println("|^^^^-----/|");
}
}