java数据结构- 栈

来源:互联网 发布:java io流详解 编辑:程序博客网 时间:2024/05/23 12:10


概念很简单,栈 (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("|^^^^-----/|");}

}

这里写图片描述

原创粉丝点击